由于appcompat v7缺少SwitchCompatPreference
,似乎有必要自己创建它。
如何实现这一目标?我用Google搜索了一下,找到了DialogPreference
的教程。我尝试将其用于SwitchCompatPreference
,但在我的xml布局中,它总是说在偏好xml中不允许使用此类。
我需要做什么?
答案 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
样式。