创建自己的SwitchCompat首选项

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

怎么能实现这一目标? 我google了一下,find了DialogPreference的教程。 我尝试将它用于SwitchCompatPreference但在我的xml布局中,它总是说在偏好xml中不允许这个类。

我需要做什么?

您无需创建新组件。

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

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

   android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:clickable="false"  android:focusable="false"  android:gravity="center" /> 

然后,在PreferenceFragmentSwitchPreference CheckBoxPreference中,

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

或者,直接到你的CheckBoxPreference,

 android:widgetLayout="@layout/l_switch" 

这将强制CheckBoxPreference使用SwitchCompat样式。