是否有 XML 属性,以便我可以使用属性:android:enabled="false" 设置自定义首选项的外观?
例如,如果您使用默认的 CheckBoxPreference 并禁用它,它将显示为灰色并向用户指示它已被禁用,单击它可能不会执行任何操作。
但是根据我的自定义偏好,禁用它不会使它看起来有任何不同,因此当用户单击它时它会混淆它并且它什么也不做。
是否有 XML 属性,以便我可以使用属性:android:enabled="false" 设置自定义首选项的外观?
例如,如果您使用默认的 CheckBoxPreference 并禁用它,它将显示为灰色并向用户指示它已被禁用,单击它可能不会执行任何操作。
但是根据我的自定义偏好,禁用它不会使它看起来有任何不同,因此当用户单击它时它会混淆它并且它什么也不做。
创建可绘制的 checkbox.xml 文件,其中包含<selector>
根据其状态设置复选框按钮的图像:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/checkbox_checked" /> <!-- checked -->
<item android:state_checked="false"
android:drawable="@drawable/checkbox_unchecked" /> <!-- default -->
</selector>
您甚至可以使用颜色来代替这些可绘制对象。
在您的自定义复选框首选项 checkbox_preference.xml 中使用此可绘制添加复选框的按钮。将此文件放在布局文件夹中:
<CheckBox android:id="@+android:id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/checkbox" />
使用您的 prefs.xml 膨胀它。layout 属性用于将自定义布局与自定义复选框放在一起。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/category_title">
<CheckBoxPreference
android:key="preferenceKey"
android:title="@string/preferenceTitle"
android:defaultValue="false"
android:layout="@layout/checkbox_preference"
/>
</PreferenceCategory>
</PreferenceScreen>