android中带有启用禁用和选中的自定义复选框

android中带有启用禁用和选中的自定义复选框,android,checkbox,selector,checked,disable,Android,Checkbox,Selector,Checked,Disable,这是我的简单选择器 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_square_blue_border_unselected" android:state_checked="false" />

这是我的简单选择器

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_square_blue_border_unselected" android:state_checked="false" />
    <item android:drawable="@drawable/ic_square_checkbox_selected" android:state_checked="true" />
    <item android:drawable="@drawable/ic_square_blue_border_unselected" />
</selector>
并且,checkbox.setEnabled(false)不适用于这种情况。这是我的xml代码

<CheckBox
                        android:id="@+id/checkbox"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:button="@drawable/selector_chkbox_blue_border"
                        android:textColor="@color/steel_grey"
                        android:paddingLeft="10dp"
                        android:text="Checkbox text"/>

我也试过了,但还是没能成功:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_square_blue_border_unselected" android:state_checked="false" />
    <item android:drawable="@drawable/ic_square_checkbox_selected" android:state_checked="true" />
    <item android:drawable="@drawable/ic_square_checkbox_selected_disabled" android:state_enabled="false"/>
    <item android:drawable="@drawable/ic_square_blue_border_unselected_disabled" />
</selector>

在没有选项的项目之前添加启用了
状态的项目:false/true
,此处为

由于此项没有条件,因此它适用于每个项,并覆盖其下的所有项,因为Android会从上到下连续检查它,如
if else if
条件,当它找到匹配项时,它会停止

因此,为了工作,您必须添加最后一个选项中没有选项的项

例如:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_square_blue_border_unselected" android:state_checked="false" />
    <item android:drawable="@drawable/ic_square_checkbox_enabled" android:state_enabled="true" />
    <item android:drawable="@drawable/ic_square_blue_border_disabled" android:state_enabled="false" />
    <item android:drawable="@drawable/ic_square_checkbox_selected" android:state_checked="true" />
    <item android:drawable="@drawable/ic_square_blue_border_unselected" />
</selector>

在没有选项的项目之前添加启用了
状态的项目:false/true
,此处为

由于此项没有条件,因此它适用于每个项,并覆盖其下的所有项,因为Android会从上到下连续检查它,如
if else if
条件,当它找到匹配项时,它会停止

因此,为了工作,您必须添加最后一个选项中没有选项的项

例如:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_square_blue_border_unselected" android:state_checked="false" />
    <item android:drawable="@drawable/ic_square_checkbox_enabled" android:state_enabled="true" />
    <item android:drawable="@drawable/ic_square_blue_border_disabled" android:state_enabled="false" />
    <item android:drawable="@drawable/ic_square_checkbox_selected" android:state_checked="true" />
    <item android:drawable="@drawable/ic_square_blue_border_unselected" />
</selector>


这是可行的,默认的可绘制图形将不具有任何状态,其他图形将同时具有这两种状态…



这是可行的,一个默认的drawable将没有任何状态,另一个将同时具有这两种状态…

您所说的“checkbox.setEnabled(false)不起作用”是什么意思?我想在禁用复选框时给它一个灰色的外观。当我将复选框设为enabled false时,它不会改变外观。复选框变为不可点击,这是正确的,但不会更改颜色您所说的“Checkbox.setEnabled(false)不工作”是什么意思?我想在禁用复选框时给它一个灰色的外观。当我将复选框设为enabled false时,它不会改变外观。复选框变为不可点击,这是正确的,但不会更改颜色我这样做了,但它仍然不起作用<代码>@SamratGarai错误到底是什么?添加相同的文本片段在这里没有帮助。没有任何错误,我唯一的问题是,当复选框被禁用时,我无法将其设置为灰色,而且,我不知道文本片段将无法获得正确的格式,所以我再次更新了问题…我这样做了,但仍然不起作用<代码>@SamratGarai错误到底是什么?添加相同的文本片段在这里没有帮助。没有错误,我唯一的问题是,当复选框被禁用时,我无法将其设置为灰色,而且,我不知道文本片段将无法获得正确的格式,因此我再次更新了问题。。。
<selector xmlns:android="http://schemas.android.com/apk/res/android">


    <item android:drawable="@drawable/ic_square_checkbox_selected" android:state_checked="true" android:state_enabled="true"/>
    <item android:drawable="@drawable/ic_square_blue_border_unselected_disabled" android:state_checked="false" android:state_enabled="false"/>


    <item android:drawable="@drawable/ic_square_checkbox_selected_disabled" android:state_checked="true" android:state_enabled="false"/>
    <item android:drawable="@drawable/ic_square_blue_border_unselected" />


</selector>