如何防止检查CheckBox?

yco*_*omp 27 android

当我点击CheckBox时,我希望能够阻止选择CheckBox(或将其设置回未选中状态)

我怎样才能做到这一点?

我不想简单地禁用该复选框.我希望用户认为它是可检查的,但是当用户试图检查它时...我会(可能)阻止检查复选框并显示消息.

小智 56

只需android:clickable="false"在布局xml中添加该属性即可.

所以对我来说,我有:

    <CheckBox
        android:id="@+id/server_is_online"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:clickable="false"
        android:text="@string/server_is_online"
        android:textSize="23sp" />
Run Code Online (Sandbox Code Playgroud)

它工作正常.

不,这可能不是你应该如何使用复选框,但我在原型制作阶段使用它作为一个肮脏的黑客,而不是有一个漂亮的图标,绿色勾选所有的好,一个邪恶的红色十字架为结束世界 :)


Woo*_*dsy 18

你可以这样做:

cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){

    @Override
    public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) {
    if(isChecked){
        cb.setChecked(false);
        // Code to display your message.
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 假设您希望每次单击时都显示消息,而不是执行 if 语句,您也可以只执行 `cb.setChecked(!isChecked)`。 (2认同)
  • @ mooing-duck没有它不循环或溢出. (2认同)

小智 8

只需将其设置为永不被点击即可

cb.setClickable(false);
Run Code Online (Sandbox Code Playgroud)


cod*_*mer 5

尝试以下

    CheckBox repeatChkBx =
    ( CheckBox ) findViewById( R.id.repeat_checkbox );
repeatChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
           repeatChkBx.setChecked(false); // perform logic of opening message
        }

    }
});
Run Code Online (Sandbox Code Playgroud)