2

我的 xml 文件中有以下首选项:

<?xml version="1.0" encoding="utf-8"?>
<CheckBoxPreference android:title="Alert" android:widgetLayout="@layout/preference_checkbox" android:key="alert"
    />

我想制作我自己的自定义复选框,所以正如您在上面看到的,我给出了这个首选项“android:widgetLayout”参数,它链接到这个文件:

<CheckBox 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/checkbox"
android:id="@+id/alert">

问题:使用 (widgetLayout) 参数时,它不会保存复选框值。因此,如果我打开首选项 CheckBox 会被选中。然后,如果我取消选中它并再次打开首选项,则不会存储之前的值,或者它不会持续存在。如果我使用不带参数“android:widgetLayou”的 CheckBoxPreference 就没有这个问题,在这种情况下,值被存储。

有任何想法吗?

4

1 回答 1

4

您可以通过以下方式简单地修复它:

1-将复选框 id 更改为 android:id="@android:id/checkbox

2-设置这 3 个属性:

安卓:focusableInTouchMode="假"

机器人:可点击=“假”

安卓:可聚焦=“假”

<CheckBox 
 android:id="@android:id/checkbox"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:button="@drawable/checkbox"
 android:clickable="false"
 android:focusable="false"
 android:focusableInTouchMode="false" >
于 2014-08-04T06:11:35.203 回答