【发布时间】:2017-03-22 15:32:14
【问题描述】:
在 PreferenceFragment 中,我通过 XML 添加了 SwitchPreferenceCompat:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="cat 1">
<SwitchPreferenceCompat
android:key="pref_1"
android:defaultValue="false"
android:title="from xml"/>
</PreferenceCategory>
<PreferenceCategory
android:key="pref_cat_1"
android:title="cat 2"/>
</PreferenceScreen>
还有一个以编程方式添加:
PreferenceGroup preferenceGroup = (PreferenceGroup) findPreference("pref_cat_1");
SwitchPreferenceCompat switchPreference = new SwitchPreferenceCompat(getActivity());
switchPreference.setWidgetLayoutResource(android.support.v7.preference.R.layout.preference_widget_switch_compat);
switchPreference.setTitle("programmatically");
switchPreference.setChecked(true);
switchPreference.setDefaultValue(true);
switchPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(final Preference preference, final Object newValue) {
Toast.makeText(getActivity(), newValue.toString(), Toast.LENGTH_SHORT).show();
return true;
}
});
preferenceGroup.addPreference(switchPreference);
在屏幕上它们看起来不同(字体大小):
我尝试省略该行
switchPreference.setWidgetLayoutResource(android.support.v7.preference.R.layout.preference_widget_switch_compat);
但随后“切换”按钮变得不可见。
我怎样才能让它们看起来一样?
可以在on Github (branch_two) 找到测试项目。
【问题讨论】:
-
你真的像上面那样把
SwitchPreferenceCompat包裹在PreferenceCategory中吗? -
PreferenceScreen也有它的compat兄弟,声明在xml而不是原来的PreferenceScreen。 -
当我使用
Compat 25.2.0时,它们看起来完全一样。 -
@GiovanniTerlingen 抱歉,忘记推送我的更改。如果您再次结帐 branch_two,您将看到不同之处。
-
这是使用错误上下文创建新首选项的相同问题的重复。解决方案见this。
标签: android android-support-library android-preferences android-preference-v14