创建自己的SwitchCompat首选项

时间:2014-11-03 22:36:37

标签: android android-appcompat preference switchcompat

由于appcompat v7缺少SwitchCompatPreference,似乎有必要自己创建它。

如何实现这一目标?我用Google搜索了一下,找到了DialogPreference的教程。我尝试将其用于SwitchCompatPreference,但在我的xml布局中,它总是说在偏好xml中不允许使用此类。

我需要做什么?

1 个答案:

答案 0 :(得分:24)

您无需创建新组件。

首先,您应该使用CheckBoxPreference而不是SwitchPreference,以支持较低的API。

使用现有的android.support.v7.widget.SwitchCompat小部件,创建一个新的布局文件,例如l_switch.xml。使用以下代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.SwitchCompat xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/checkbox" <!-- IMPORTANT -->
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@null"
    android:clickable="false" <!-- IMPORTANT -->
    android:focusable="false" <!-- IMPORTANT -->
    android:gravity="center" />

然后,转到PreferenceFragment中的 SwitchPreference CheckBoxPreference

yourSwitch = findPreference("key_for_this_component");
yourSwitch.setWidgetLayoutResource(R.layout.l_switch);

或直接到您的CheckBoxPreference,

android:widgetLayout="@layout/l_switch"

这将强制CheckBoxPreference使用SwitchCompat样式。