【问题标题】:setHomeButtonEnabled on PreferenceActivity and nested preferencePreferenceActivity 和嵌套首选项上的 setHomeButtonEnabled
【发布时间】:2012-08-15 15:01:33
【问题描述】:

我已扩展偏好屏幕PreferenceActivity。针对 OS 4.0.3,我想在操作栏上添加 < 图标,所以我在 onCreate() 中进行了此操作。

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

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

自从PreferenceActivity 巧妙地隐藏它以来,我从未想过嵌套偏好机制。现在我的问题是,为什么PreferenceActivity 不会在嵌套首选项中显示<

我不想争辩说我不需要将< 添加到首选项屏幕。 (即使是谷歌的一些应用程序,也有一些没有,所以我认为这没有固定的规则。)

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我无法让您的解决方案发挥作用。我得到“找不到与给定名称匹配的资源(在'主题',值为'@android:style/MyTheme')。”。我用谷歌搜索解决了这个问题,但失败了。
    • 你已经有一个styles.xml了吗?如果是这样,请将
    • 不,我没有 styles.xml。
    • Android 从具有 的 res/values 文件中加载样式。文件的名称是什么(themes.xml 或 styles.xml)无关紧要,但您需要在 res/values/ 中定义不同的
    • 我将 theme.xml 重命名为 styles.xml 并且它有效。但这与我想做的不同。无论如何,谢谢你的帮助。我接受你的回答。
    【解决方案2】:

    这是我在设置活动上的主页按钮的工作代码

        @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>
    

    【讨论】:

      【解决方案3】:

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

      有关血腥细节,请参阅此问题: Up indicator does not show up

      【讨论】:

      • @sapn,谢谢您的回答。但我无法解决我的问题。我找不到如何将“
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      相关资源
      最近更新 更多