我有一个两级 PreferenceScreen:
<PreferenceScreen>
general settings
<PreferenceScreen android:key="adv_settings">
more advanced settings
</PreferenceScreen>
</PreferenceScreen>
我的问题是第二个屏幕不会自动在操作栏上显示后退/向上按钮。如何使向上按钮出现在 adv_settings 上?
我有一个两级 PreferenceScreen:
<PreferenceScreen>
general settings
<PreferenceScreen android:key="adv_settings">
more advanced settings
</PreferenceScreen>
</PreferenceScreen>
我的问题是第二个屏幕不会自动在操作栏上显示后退/向上按钮。如何使向上按钮出现在 adv_settings 上?
您可以通过编写与应用程序主题一起使用的自定义 ActionBar 样式来添加箭头。
res/values-v11/styles.xml:(或将这些添加到您现有的styles.xml)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
</style>
</resources>
然后在你的 AndroidManifest.xml 中应用这个主题:
<application android:theme="@style/MyTheme">
注意:添加此箭头的明显方法应该是调用:
getActionBar().setDisplayHomeAsUpEnabled(true);
一旦第二个屏幕加载,但我认为有一个 Android 错误,其中 getActionBar() 总是返回第一层 ActionBar 对象,而不是当前可见的对象,因此动态设置箭头失败。
这可能需要更多工作,但您可以创建两个 PreferenceAtivity 文件,每个文件都有自己的 PreferenceFragment。每个 PreferenceFragment 都有自己的 PreferenceScreen XML(第一级屏幕和第二级屏幕)。从第一级屏幕中,您启动第二个 PreferenceActivity,并在标签内添加一个 Intent。在第二个 PreferenceActivity 中,您可以通过以下方式设置主页图标:
ActionBar bar = getActionBar();
bar.setDisplayHomeAsUpEnabled(true);
然后还有一个主页按钮的处理程序:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if (item.getItemId() == android.R.id.home) {
finish();
}
return false;
}
资产:
FirstPreferenceActivty
FirstPreferenceFragment
pref_first.xml (layout with PreferenceScreen and Prefernce nodes)
SecondPreferenceActivty
SecondPreferenceFragment
pref_second.xml (layout with PreferenceScreen and Prefernce nodes)
如果按钮没有自动出现,您可以像在这些链接上那样手动添加它:
Android:如何制作自定义 PreferenceScreen?
该 SO 问题的第二个答案中有一个示例代码,其中的代码段可能来自另一个 pastebin 位置。