我正在尝试创建一个带有动态条目列表的首选项屏幕,当点击每个条目时,我有另一个首选项屏幕。 例如,考虑一个邮件帐户列表,每个帐户都有可用的帐户设置。
虽然我可以使用PreferenceScreens
创建我想要的嵌套,但是如果没有在代码中为每个条目创建子偏好结构,则无法轻松扩展到多个条目。
我在Android UI中看到了几种不同的变体。
有没有建议的方法来创建这样的结构?
Possibilites包括:
独立,独立的活动
在我看来工作但很麻烦
嵌套,代码创建PreferenceScreens
维护中的痛苦,这意味着首选项不再存储为XML片段
嵌套,夸大的PreferenceScreens
我找不到将另一个XML文件扩展到子树的方法
使用setPreferenceScreen()为每一个显示的一个“子”PreferenceScreen 我找不到隐藏“模板”PreferenceScreen的方法,它会破坏导航。
示例XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/prefs_title">
<EditTextPreference android:key="add_console"
android:title="@string/prefs_add_console"></EditTextPreference>
<PreferenceCategory android:title="@string/prefs_consoles_title"
android:key="list">
<PreferenceScreen android:summary="http://cctv.icode.co.uk/"
android:title="iCode Console">
</PreferenceScreen>
<PreferenceScreen android:summary="http://test.icode.co.uk/"
android:title="Test Console">
</PreferenceScreen>
</PreferenceCategory>
<PreferenceScreen android:title="Console (template)"
android:key="console">
<EditTextPreference android:title="@string/prefs_console_host"
android:summary="@string/prefs_not_set" android:key="host"></EditTextPreference>
<CheckBoxPreference android:title="@string/prefs_console_auth"
android:summary="@string/prefs_console_auth_summary" android:key="auth"></CheckBoxPreference>
<EditTextPreference android:shouldDisableView="true"
android:title="@string/prefs_console_authuser" android:key="authuser"
android:dependency="auth" android:summary="@string/prefs_not_set"></EditTextPreference>
<EditTextPreference android:title="@string/prefs_console_authpass"
android:key="authpass" android:dependency="auth" android:summary="@string/prefs_not_set"></EditTextPreference>
<CheckBoxPreference android:title="@string/prefs_console_pair"
android:summary="@string/prefs_console_pair_summary" android:key="pair"></CheckBoxPreference>
</PreferenceScreen>
</PreferenceScreen>
我希望list
下的条目是动态的,并在每个条目下显示console
首选项。
欢迎所有其他想法。
谢谢
答案 0 :(得分:0)
您是否尝试将动态XML文件包含在用于首选项的主文件中?
这两项文章详述了这项技术:
http://www.aslingandastone.com/2010/dynamically-changing-android-views/
http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html
他们解释了如何在你的观点3中做你要求的事情:
嵌套,夸大的PreferenceScreens
基本上,我们的想法是使用这个简单的标记将另一个XML文件包含到现有的文件中:
<include
android:id="@+id/layout_to_nest"
layout="@layout/layout_to_nest" />
我不知道你是否尝试过,但如果没有,似乎值得一试!