【发布时间】:2015-07-31 22:20:46
【问题描述】:
仅用于在 Android Lollipop 上扩展 CheckBoxPreference 或 SwitchPreference,小部件(复选框或开关)将不再有动画。
我想扩展 SwitchPreference 以强制 api
我正在使用新的AppCompatPreferenceActivity 和appcompat-v7:22.1.1,但这似乎不会影响开关。
问题是只扩展这些类,而不添加任何自定义布局或小部件资源布局,动画就消失了。
我知道我可以编写我的preference.xml 的两个实例(在内部值-v21 上)并且它会工作......但我想知道为什么会发生这种情况,如果有人知道没有两个偏好的解决方案.xml。
代码示例:
public class SwitchPreference extends android.preference.SwitchPreference {
public SwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public SwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public SwitchPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SwitchPreference(Context context) {
super(context);
}
}
CheckBoxPreference 或相同,然后使用:
<com.my.package.SwitchPreference />
将使棒棒糖设备中的动画消失。
--
我为 SwitchPreference(我可以使用 CheckBoxPreference)尝试的另一件事是提供一个具有默认 id 的布局,但 @android:id/switchWidgetis not public 而 @android:id/checkbox 是。我也知道我可以使用 <CheckBoxPreference /> 并提供一个实际上是 SwitchCompat 的小部件布局,但我想避免这种情况(混淆名称)。
【问题讨论】:
-
您找到解决方案了吗?
-
不,我没有。实际上,我在 Lollipop 之前有一个材料偏好库:github.com/ferrannp/material-preferences,它唯一的错误是这个:github.com/ferrannp/material-preferences/issues/9
-
有一个很好的答案here 对我有用。
标签: android android-5.0-lollipop android-preferences material-design