1

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

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

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

4

1 回答 1

1

创建可绘制的 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>
于 2020-08-06T05:52:37.507 回答