禁用自定义首选项但还提供禁用时的布局?

Disabling Custom Preference but also provide a layout for when it is disabled?

是否有 XML 属性,以便我可以使用以下属性设置自定义首选项的外观:android:enabled="false"?

例如,如果您使用默认的 CheckBoxPreference 并将其禁用,它将显示为灰色并向用户表明它已被禁用并且单击它可能不会执行任何操作。

但根据我的自定义偏好,禁用它不会使它看起来有任何不同,因此当用户单击它时它会混淆并且它什么也不做。

创建包含 <selector> 的可绘制 checkbox.xml 文件,根据其状态设置复选框按钮的图像:

<?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>