我有两级PreferenceScreen:
<PreferenceScreen>
general settings
<PreferenceScreen android:key="adv_settings">
more advanced settings
</PreferenceScreen>
</PreferenceScreen>
我的问题是第二个屏幕没有自动显示操作栏上的后退/上移按钮。如何在adv_settings上显示向上按钮?
答案 0 :(得分:7)
您可以通过编写要与应用程序主题一起使用的自定义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对象,而不是当前可见的对象,因此动态设置箭头失败。
答案 1 :(得分:2)
这可能会有更多工作,但您可以创建两个PreferenceAtivity文件,每个文件都有自己的PreferenceFragment。每个PreferenceFragment都有自己的PreferenceScreen XML(第一级屏幕和第二级屏幕)。从第一级屏幕开始,您可以在标记内使用Intent启动第二个PreferenceActivity。在第二个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)
答案 2 :(得分:0)
如果按钮没有自动出现,您可以像在这些链接上一样手动添加:
Android: How can make custom PreferenceScreen?
在SO问题的第二个答案中有一个示例代码,其中的代码段可能来自另一个pastebin位置。