android - 3状态切换按钮?

标签 android button android-button

<分区>

要求是像这样实现一个三向切换按钮..

switch

yes

[插入无状态开关]

几乎所有我检查过的地方,都只有 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/

相关文章:

image - 如何将透明图像添加到 MS Access 2010 按钮控件?

php - 如何制作带有自定义字段的 PayPal 加密立即购买按钮?

android - 我的网站在 android 默认浏览器上没有 css

android - 我应该关注 Eclipse 控制台区域中的 DDMS 消息吗?

javascript - 按钮 Javascript 问题的文本输出

android - 覆盖按钮不起作用的文本颜色

java - 将按钮的外观更改为圆形按钮

android - 无法在按钮上设置背景资源

android - 将图像顶部与 TextView 顶部对齐

java - 我如何在 SimpleAdapter 中使用 setViewImage?