<分区>
要求是像这样实现一个三向切换按钮..
[插入无状态开关]
几乎所有我检查过的地方,都只有 2 态开关按钮,我发现的唯一 3 向选项是切换。
有人用过/知道如何解决这种情况吗?
最佳答案
您必须定义一个扩展 Checkbox 的类
定义检查状态变量
覆盖 onClick 或 onCheck 方法以在 3 种状态之间更改该变量,而不是切换 isChecked 变量。
static private final int CHECKED = 1;
private int state;
public CheckBoxTriStates(Context context) {
super(context);
init();
}
public CheckBoxTriStates(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CheckBoxTriStates(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init()
{
state = UNKNOW;
updateBtn();
setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
// checkbox status is changed from uncheck to checked.
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
switch (state)
{
case UNKNOW:
state = UNCHECKED;
break;
case UNCHECKED:
state = CHECKED;
break;
case CHECKED:
state = UNKNOW;
break;
}
updateBtn();
}
});
}
private void updateBtn()
{
int btnDrawable = R.drawable.ic_checkbox_indeterminate_black;
switch (state)
{
case UNKNOW:
btnDrawable = R.drawable.ic_checkbox_indeterminate_black;
break;
case UNCHECKED:
btnDrawable = R.drawable.ic_checkbox_unchecked_black;
break;
case CHECKED:
btnDrawable = R.drawable.ic_checkbox_checked_black;
break;
}
setButtonDrawable(btnDrawable);
}
public int getState()
{
return state;
}
public void setState(int state)
{
this.state = state;
updateBtn();
}
}
关于android - 3状态切换按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44279442/