从 android 上的操作栏中删除图标/徽标

Posted

技术标签:

【中文标题】从 android 上的操作栏中删除图标/徽标【英文标题】:Remove icon/logo from action bar on android 【发布时间】:2013-01-14 09:41:47 【问题描述】:

我一直在尝试找到某种方法从操作栏中删除图标/徽标,但在搜索 SO、android 的文档和 Google 一个小时后,我发现的唯一一件事是如何完全删除标题栏.那不是我想要的。只想从标题栏中删除图标/徽标。

任何人都知道如何做到这一点?最好我想在 XML 中执行此操作。

【问题讨论】:

您可能已经阅读了操作栏上的 API 指南。它在指南中说得对。 每条信息都可以在某个地方找到。 你能告诉我们你的尝试吗?你以前发现了什么不起作用? @DForck42 这个问题真的不再相关了(差不多 4 岁)。您可以在下面的答案中找到很多实现这一目标的方法。 【参考方案1】:

在您的操作栏样式中添加以下代码:

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <!-- This does the magic! -->

PS:我正在使用 Actionbar Sherlock,效果很好。

【讨论】:

不错的技巧,谢谢!它甚至不再占用操作栏中的空间! 谢谢..它也可以在代码中工作... actionBar.setIcon(android.R.color.transparent); 优秀的答案...:) 某些三星设备将@android:color/transparent 显示为黑色。看起来很疯狂,但许多设备制造商会覆盖 Android 的默认设置;包括颜色。因此,我会在 colors.xml 中像这样创建一个颜色:&lt;color name="transparent"&gt;#00000000&lt;/color&gt; 并引用它而不是从 Android 获取值。 @jose_GD: android:displayOptions 仅适用于 v11 及更高版本,因此您需要两者都向后兼容。【参考方案2】:

如果您不希望在特定活动中使用该图标。

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    

【讨论】:

getActionBar().setIcon(android.R.color.transparent);似乎足够了 调用方法 getActionBar().... 更好地解决这个问题(从操作栏中删除图标),因为如果您使用导航栏和操作栏,那么您的操作栏将位于导航栏上方。如果您使用 setDisplayShowHomeEnabled(false) 导航栏将在操作栏上方,您不希望这样。 我将其更改为:ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); 不设置边界,透明图标仍然占用空间 @Aedis :操作栏左侧仍显示空白区域。有什么建议吗? 如果您没有设置徽标,这可以正常工作。就我而言,我不得不使用 setLogo 而不是 setIcon 方法。不过,很好的提示,让我走上了正确的道路!【参考方案3】:

如果你在AndroidManifest.xml&lt;application&gt;标签中定义了android:logo="...",那么你需要用这个东西来隐藏图标:

v11 之前的主题

<item name="logo">@android:color/transparent</item>

v11 及以上主题

<item name="android:logo">@android:color/transparent</item>

这两种样式的使用正确地隐藏了我在 2.3 和 4.4 设备上的操作栏图标(此应用使用 AppCompat)。

【讨论】:

这可行,但在我的情况下,当我有一个搜索视图并单击它/展开它时,我的应用程序图标/徽标会重新出现。有什么想法吗? @acrespo 嗯我知道你在说什么,但我还没有研究过解决方案,抱歉。 我最终做的是在我的AndroidManifest.xml 中设置&lt;application (...) android:logo="@android:color/transparent"&gt; (...),并以我的风格强制useLogodisplayOptions,就像这样&lt;item name="android:displayOptions"&gt;showHome|useLogo|homeAsUp|showTitle&lt;/item&gt; &lt;item name="displayOptions"&gt;showHome|useLogo|homeAsUp|showTitle&lt;/item&gt;。最后一部分很重要,因为在某些设备(我认为主要是棒棒糖后)中,该死的搜索视图会使用 appIcon 并将其放在徽标的位置,即使徽标设置为透明:s【参考方案4】:

这对我有用

getActionBar().setDisplayShowHomeEnabled(false);

【讨论】:

这会将操作栏置于选项卡/导航栏下方。显然这种行为是“设计使然”...code.google.com/p/android/issues/detail?id=36191 无论如何这都不能回答这个问题。我知道这个功能,但我要的是 XML! 这似乎应该是答案 - 否则你正在应用一个全局解决方案,我怀疑这是每个人都想要的。在我的情况下,我想在某些页面上显示徽标,但在其他页面上它没有意义并且使操作栏变得混乱。【参考方案5】:

打电话

mActionBar.setDisplayHomeAsUpEnabled(true);

此外,

mActionBar.setDisplayShowHomeEnabled(false);

将隐藏徽标但显示 Home As Up 图标。 :)

【讨论】:

无论如何这都不能回答这个问题。我知道这个功能,但我要的是 XML! @Hrafn - 我认为 XML 是首选答案,而不是唯一答案。 :(我想它仍然在帮助人们。:)【参考方案6】:

请注意:

<item name="android:icon">@android:color/transparent</item>

还将使您的选项项目透明。

【讨论】:

【参考方案7】:
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);

【讨论】:

无论如何这都不能回答这个问题。我知道这个功能,但我要的是 XML!【参考方案8】:
getActionBar().setIcon(android.R.color.transparent);

这对我有用。

【讨论】:

【参考方案9】:

删除或显示标题使用:

getActionBar().setDisplayShowTitleEnabled(true);

使用以下方法删除或显示徽标:

getActionBar().setDisplayUseLogoEnabled(false);

全部删除:

getActionBar().setDisplayShowHomeEnabled(false);

【讨论】:

无论如何这都不能回答这个问题。我知道这个功能,但我要求的是 XML!【参考方案10】:

您也可以在 AndroidManifest.xml 中添加以下代码。

android:icon="@android:color/transparent"

它会正常工作的。

但我发现这会带来问题,因为启动器图标也会变得透明。

所以我用了:

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

效果很好。

但是,如果您有多个活动,并且希望使活动上的图标透明,那么前一种方法将起作用。

【讨论】:

【参考方案11】:

我用过这个,它对我有用。

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));

【讨论】:

无论如何这都不能回答这个问题。我知道这个功能,但我要求的是 XML!【参考方案12】:
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);

【讨论】:

欢迎来到堆栈溢出!通常,与您类似的答案被认为质量很低。为了将来参考,您应该考虑添加一些关于您提供的代码的解释,并且您应该更好地构建代码(在每行的开头添加 4 个空格,或者将其全部选中并单击文本框上方的 符号。)另外,您应该更加注意问题的日期(一年多以前)以及它已经被回答的事实(绿色复选标志)。祝你编程好运:) 无论如何这都不能回答这个问题。我知道这个功能,但我要求的是 XML!【参考方案13】:

我认为确切的答案是:对于 api 11 或更高版本:

getActionBar().setDisplayShowHomeEnabled(false);

否则:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(因为它需要一个支持库。)

【讨论】:

无论如何这都不能回答这个问题。我知道这个功能,但我要求的是 XML!【参考方案14】:

转到您的清单并找到应用程序标签

  android:icon="@android:color/transparent"// simply add this on place of your icon

...... ... ...

【讨论】:

【参考方案15】:

Qiqi Abaziz 的回答是好的,但我仍然努力让它与兼容包一起工作并将样式应用于正确的元素。此外,透明度黑客是不必要的。所以这是一个适用于 v8 及更高版本的完整示例:

values\styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyActivityTheme" parent="@style/Theme.AppCompat">
        <item name="actionBarStyle">@style/NoLogoActionBar</item> <!-- pre-v11-compatibility -->
        <item name="android:actionBarStyle">@style/NoLogoActionBar</item>
    </style>
    <style name="NoLogoActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showHome</item> <!-- pre-v11-compatibility -->
        <item name="android:displayOptions">showHome</item>
    </style>
</resources>

AndroidManifest.xml(外壳)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">   
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
    <application android:theme="@android:style/Theme.Light.NoTitleBar">
        <activity android:theme="@style/PentActivityTheme"/>
    </application>
</manifest>

【讨论】:

【参考方案16】:

进入您的清单并找到您的活动,然后添加以下代码:

android:theme="@android:style/Theme.NoTitleBar"

在上面隐藏你的Actionbar

如果您需要其他功能,可以使用 (CLR + SPC) 查看其他选项。

【讨论】:

【参考方案17】:

最快的方法是修改你的 Manifest.xml。 例如,如果您想删除活动“Activity”的标志,并将标志留在其他活动中,您可以执行以下操作:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />

【讨论】:

【参考方案18】:

以上都不起作用。

但这成功了:

override fun onCreate() 
    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbar)
    toolbar.logo = null

(从工具栏中删除图标)

【讨论】:

以上是关于从 android 上的操作栏中删除图标/徽标的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PWA 应用主屏幕链接中删除 Chrome 徽标(Android O 预览版)

如何更改SearchView上的默认图标,以便在Android的操作栏中使用?

修改 Android 推送通知 (GCN) 中操作栏中的应用图标

windows win+x 快捷键不可用 右键 徽标不可用,任务栏快捷方式不可用

Firefox扩展程序,用于创建新图标或替换位置/地址栏中的现有图标

无法在操作栏中显示图标