【问题标题】:Android ActionBar does not show app icon after setDisplayHomeAsUpEnabled(true)在 setDisplayHomeAsUpEnabled(true) 之后,Android ActionBar 不显示应用程序图标
【发布时间】:2023-03-03 09:37:02
【问题描述】:

我想在 ActionBar 中启用向上导航功能,并关注了关于此的文档:http://developer.android.com/guide/topics/ui/actionbar.html

但是当我检查我的应用程序时(在 android 4.0 上),应用程序图标没有显示,而是只显示了一个左插入符号。

我已经检查了 android manifest 文件、java 文件和 layout 文件,但仍然不知道如何让它工作......

这里是 AndroidManifest.xml:

...
<activity
        android:name="com.test.HelpActivity"
        android:label="@string/help"
        android:parentActivityName="com.test.HomeActivity"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
        android:screenOrientation="portrait" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.test.HomeActivity" />
</activity>
...

这里是 Java 代码:

...
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

public class HelpActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_help);

        ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
}

}

感谢您的帮助!

=====更新=====

我又做了一些测试,结果如下:

在 Android 模拟器 (2.3) 上运行完美。

在 Android 模拟器 (4.1.2) 上运行完美。

在 Android 模拟器 (4.0) 上,看起来不错,但是当我单击主页/向上按钮时,什么也没有发生,并且 logcat 显示:bad parentActivityName 'HomeActivity' in manifest

在我的手机 (4.0.3) 上,只显示左插入符号,但导航工作正常。

在 Android Emulator (4.3) 上,它可以正常工作,但可聚焦区域变为应用图标 + 应用标题。 (也就是说,当我在这个长区域内按任意位置时,它会突出显示并触发向上导航事件)

我现在完全迷失了……猜猜这可能是某些 android 版本中的一些错误。

【问题讨论】:

  • 嗨。你找到解决办法了吗?我可能是同样的情况。尝试了一切,但图标不会显示。我没有想法......
  • @DEIONaLiMs,不,我没有解决方案,它看起来像是 appcompat 操作栏中的错误。最后我只是放弃了它,如果你必须摆脱这个错误,也许你可以尝试使用 Sherlock ActionBar。

标签: android android-actionbar-compat


【解决方案1】:

很奇怪,你可以用这个

getActionBar().setDisplayUseLogoEnabled(useLogo)

其中 useLogo 是真还是假,您甚至可以使用另一个可绘制对象作为操作栏图标

getActionBar().setLogo(logo)

徽标是可绘制的

【讨论】:

  • 我确实尝试了该徽标,尽管我是通过在具有相应属性的 AndroidManifest 文件中添加属性来实现的。但我也会试试这个。
【解决方案2】:

在 actionBar.setDisplayHomeAsUpEnabled(true) 下方添加这一行;
它对我有用

 actionBar.setDisplayShowHomeEnabled(true);
 actionBar.setIcon(R.drawable.ic_launcher);

【讨论】:

  • 谢谢。但相信我,我试过了,但没有用。好消息是我现在使用 Toolbar 代替,不再需要图标,使用最新的 appcompat。
【解决方案3】:

我认为在 android 5 和 API 21 中,我们不能使用应用图标进行向上操作。
如果您的 appcompat 支持库是 v7 rev21,我认为您至少不能将应用程序图标用于向上操作。但是你可以使用它而不是左上角的插入符号,或者你可以使用该插入符号右侧的应用程序图标,尽管如果你点击它什么都不会发生。

我有两个完全类似的应用程序,其中一个训练我使用较旧的 appcompat v7 和 minSdkVersion="11",我从未向其中添加 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
,但应用程序有应用程序图标,没有问题。但是在另一个应用程序中,我几天前将我的支持库更新为 rev21,当然这个应用程序的 minSdkVersion 是“8”,但是这个应用程序没有用于向上操作的 actionBar 图标,如果你向它添加顶部代码,你什么都不做。 我搜索了许多网站,我只知道在材料设计中,由于操作栏等空间的增加,谷歌删除了用于向上操作的应用程序图标。 您可以看到这一行
“当使用 Material 主题(API 21 或更高版本中的默认设置)时,导航按钮(以前称为“主页”)会占据应用程序图标之前占用的空间。希望表达更强大品牌的应用程序应该在操作栏和其他应用程序 chrome 中大量使用他们的品牌颜色,或者使用 a 代替他们的标准标题文本。”
在此页面中 http://developer.android.com/reference/android/support/v7/app/ActionBar.html
我想。 谢谢。

【讨论】:

    【解决方案4】:

    关注enter link description here

    我已经在 NavigationDrawerFragment 的设置中添加了

            Toolbar toolbar = (Toolbar) ((Activity)mCallbacks).findViewById(R.id.action_bar);
        if(toolbar!=null){
            toolbar.setLogo(R.drawable.ic_launcher);
        }   
    

    似乎也不需要

        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);
    

    我正在使用最后一个支持库 21.0.3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多