在PreferenceActivity和嵌套首选项上设置setHomeButtonEnabled

时间:2012-08-15 15:01:33

标签: android android-actionbar android-4.0-ice-cream-sandwich preferenceactivity android-homebutton

我有首选屏幕PreferenceActivity。为了定位OS 4.0.3,我想在操作栏上添加<图标,因此我在onCreate()中执行此操作。

ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);

有效。应用程序图标左侧添加了<。但是当我点击进入下一级别的项目(更详细的屏幕)时,<将不会显示。返回顶层,<再次出现。

我从未想过嵌套偏好的机制,因为聪明的PreferenceActivity隐藏了它。现在我的问题是,为什么PreferenceActivity不会在嵌套首选项上显示<

我不想说我不需要将<添加到首选项屏幕。 (甚至谷歌的一些应用程序都会添加,有些则没有,所以我认为没有可靠的规则。)

如果有一个简单的解决方案,我想解决这个问题。

3 个答案:

答案 0 :(得分:1)

您应该通过编写要与应用程序主题一起使用的自定义ActionBar样式来添加箭头,而不是动态添加它。 (基本上,请参阅https://stackoverflow.com/a/16247111/582004

答案 1 :(得分:1)

这是我在设置活动

上的主页按钮的工作代码
    @Override   
    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent();
    Toolbar bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.settings_toolbar, root, false);
    root.addView(bar, 0); // insert at top
    bar.setTitle("Settings");
    bar.setTitleTextColor(Color.WHITE);

    bar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
    addPreferencesFromResource(R.layout.settings);

}

这是settings_toolbar.xml

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:elevation="2dp"
android:fitsSystemWindows="true"
android:minHeight="?attr/actionBarSize"
app:navigationIcon="@drawable/gobackleftarrow"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

</android.support.v7.widget.Toolbar>

答案 2 :(得分:0)

您需要为要显示向上导航的每个活动启用主页按钮和操作栏。您还必须在清单中设置父活动。

有关血腥的详细信息,请参阅此问题: Up indicator does not show up