下面是一个带有文本和自定义视图的Android开关的代码示例:
public class SwitchButton extends Switch {
private TextView textView;
public SwitchButton(Context context) {
super(context);
init(context);
}
public SwitchButton(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public SwitchButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
// 添加文本视图
textView = new TextView(context);
textView.setTextOff("OFF");
textView.setTextOn("ON");
textView.setTextColor(Color.BLACK);
textView.setGravity(Gravity.CENTER);
LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.CENTER;
addView(textView, layoutParams);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
// 设置文本视图的位置
int centerX = (right - left) / 2;
int centerY = (bottom - top) / 2;
int textWidth = textView.getMeasuredWidth();
int textHeight = textView.getMeasuredHeight();
textView.layout(centerX - textWidth / 2, centerY - textHeight / 2, centerX + textWidth / 2, centerY + textHeight / 2);
}
}
SwitchButton switchButton = findViewById(R.id.switchButton);
switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// 处理开关状态变化事件
}
});
这样就可以创建一个带有文本和自定义视图的开关控件了。