我的 android 应用程序中有一个 PreferenceActivity,用于显示设置屏幕。我想在其中添加一个“MultiSelectListPreference”,但我遇到了一个问题,即它不适用于 API11 之前的 android 版本,因为它是在 API11 中引入的。没问题,我通过两个 xml 布局解决了这个问题,一个在 res/xml-v11 中带有“MultiSelectListPreference”,另一个在 res/xml 中只有“Preference”,我使用自定义对话框处理。
res/xml-v11 中的 xml 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference android:key="time"
android:persistent="false"
android:title="@string/time" />
<MultiSelectListPreference android:key="days_multi"
android:persistent="false"
android:title="@string/days" />
<ListPreference android:key="action"
android:persistent="false"
android:title="@string/action" />
</PreferenceScreen>
res/xml 中的那个看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference android:key="time"
android:persistent="false"
android:title="@string/time" />
<Preference android:key="days_dialog"
android:persistent="false"
android:title="@string/days" />
<ListPreference android:key="action"
android:persistent="false"
android:title="@string/action" />
</PreferenceScreen>
如您所见,唯一的区别是列表中的第二个元素,其余部分完全相同。有没有更好的方法来处理这个问题,以便在一个文件中重用相同的代码并根据 Android 版本动态引用剩余部分?理想的解决方案看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference android:key="time"
android:persistent="false"
android:title="@string/time" />
<Preference source="days.xml" />
<ListPreference android:key="action"
android:persistent="false"
android:title="@string/action" />
</PreferenceScreen>
虽然我也会在 res/xml-v11 和 res/xml 下拥有名为 days.xml 的文件,其中包含不同的部分。
在文档中以及在 StackOverflow 上搜索后,我找不到任何相关内容。android是否提供了一种方法来做到这一点?或者也许还有其他方法可以分解出通用代码?