我一直在尝试找到从操作栏中删除图标/徽标的方法,但是经过一个小时的搜索之后,我唯一发现的内容是,如何从Android的文档和Google中整体删除标题栏。那不是我想要的。只想从标题栏中删除图标/徽标。
有人知道如何做到这一点吗?最好是我想用XML做到这一点。
我一直在尝试找到从操作栏中删除图标/徽标的方法,但是经过一个小时的搜索之后,我唯一发现的内容是,如何从Android的文档和Google中整体删除标题栏。那不是我想要的。只想从标题栏中删除图标/徽标。
有人知道如何做到这一点吗?最好是我想用XML做到这一点。
Answers:
如果您android:logo="..."
在的<application>
标记中定义了AndroidManifest.xml
,则需要使用以下内容来隐藏图标:
<item name="logo">@android:color/transparent</item>
<item name="android:logo">@android:color/transparent</item>
这两种样式的使用已为我正确隐藏了2.3和4.4设备上的操作栏图标(此应用使用AppCompat)。
<application (...) android:logo="@android:color/transparent"> (...)
在我AndroidManifest.xml
,并迫使useLogo
用于displayOptions
在我的风格是这样<item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>
。最后一部分很重要,因为在某些设备(我认为主要是棒棒糖发布之后)中,该死的searchview将appIcon替换为徽标,即使徽标被设置为透明:s
在操作栏样式中添加以下代码:
<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,效果很好。
@android:color/transparent
为黑色。似乎很疯狂,但是许多设备制造商都覆盖了Android的默认设置;包括颜色。因此,我将像这样在colors.xml中创建颜色:<color name="transparent">#00000000</color>
并引用该颜色,而不是从Android获取值。
如果您不想在特定活动中使用该图标。
getActionBar().setIcon(
new ColorDrawable(getResources().getColor(android.R.color.transparent)));
ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd);
不设置边界,透明图标仍然使用空间
setLogo
代替setIcon
方法。尽管如此,很棒的提示,还是让我走上了正确的路!!
//disable application icon from ActionBar
getActionBar().setDisplayShowHomeEnabled(false);
//disable application name from ActionBar
getActionBar().setDisplayShowTitleEnabled(false);
使用以下方法删除或显示标题:
getActionBar().setDisplayShowTitleEnabled(true);
使用以下方法删除或显示徽标:
getActionBar().setDisplayUseLogoEnabled(false);
移除所有:
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);
转到清单中找到应用程序标签
android:icon="@android:color/transparent"// simply add this on place of your icon
..... ... ...
齐齐·阿巴齐兹(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(shell)
<?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>
最快的方法是修改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" />
以上都不起作用。
但这确实成功了:
override fun onCreate() {
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
toolbar.logo = null
(已从工具栏中删除图标)