从 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 中像这样创建一个颜色:<color name="transparent">#00000000</color>
并引用它而不是从 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
的<application>
标签中定义了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
中设置<application (...) android:logo="@android:color/transparent"> (...)
,并以我的风格强制useLogo
为displayOptions
,就像这样<item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>
。最后一部分很重要,因为在某些设备(我认为主要是棒棒糖后)中,该死的搜索视图会使用 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 快捷键不可用 右键 徽标不可用,任务栏快捷方式不可用