是否可以将一个preferences.xml包含到另一个中,就像使用<include />标记的布局一样?
比方说:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:title="@string/pref_group_title_visual">
<include
preferences_filename="xml/pref_visual"/>
</PreferenceScreen>
...发布于 2011-12-02 20:44:57
这里的解决方案是从PreferencesActivity中膨胀这两个首选项文件。例如:
addPreferencesFromResource(R.xml.options);
addPreferencesFromResource(R.xml.additional_options);发布于 2012-05-08 08:40:11
解决方案灵魂展示了它的工作。它可以扩展为仅显示首选项,如果您是使用应用程序的未签名版本的开发人员;)
addPreferencesFromResource(R.xml.options);
addPreferencesFromResource(R.xml.additional_options);
if (BuildConfig.DEBUG) {
addPreferencesFromResource(R.xml.developer_options);
}我创建了一篇关于这个问题的博客文章,并有一个完整的工作代码示例可供下载。http://androidfu.blogspot.com/2012/05/developer-debug-with-nested-preferences.html
发布于 2013-12-28 03:43:12
要真正实现嵌套效果,您可以使用此技术将加载的首选项重新定位到已加载的组。
PreferenceCategory notifications = (PreferenceCategory) getPreferenceScreen ().findPreference (PreferenceKey.pref_notifications.name ());
addPreferencesFromResource (R.xml.pref_notifications, notifications);其中,增强型addPreferencesFromResource定义为:
private void addPreferencesFromResource (int id, PreferenceGroup newParent) {
PreferenceScreen screen = getPreferenceScreen ();
int last = screen.getPreferenceCount ();
addPreferencesFromResource (id);
while (screen.getPreferenceCount () > last) {
Preference p = screen.getPreference (last);
screen.removePreference (p); // decreases the preference count
newParent.addPreference (p);
}
}它适用于任何PreferenceGroup,如PreferenceScreen和PreferenceCategory。
https://stackoverflow.com/questions/5314582
复制相似问题