从Honeycomb操作栏中删除应用程序图标和标题

59
8个回答

129

10
有没有办法通过 XML 移除图标? - James
8
刚想通了...您需要使用abDisplayOptions并设置您所需的useLogo、showHome、homeAsUp、showTitle和showCustom的组合。我只想显示标题而没有图标,所以我写了<item name="abDisplayOptions">showTitle</item> - James
7
@James 尝试了你的 XML 代码,但并没有成功(显然),为了让其他人找到正确的内容,例如 <item name="android:displayOptions">useLogo|showHome|showTitle</item>。我将对其进行翻译并使其更加易懂。 - Cel
1
@Cel 我很确定这是因为我使用了Action Bar Sherlock而你没有。这就是为什么名称不同,但代码基本相同的原因。我应该使用标准操作栏来涵盖更一般的情况。抱歉! - James
2
是的,它完美地工作,但它也会从操作栏中移除HomeUpIndicatior。所以如果需要HomeUpIcon而不需要标志图标,你可以只设置getActionBar.setIcon(R.color.transparent)。 - Krishna Shrestha

79

如果您希望使用 XML 的方式实现,那么请在 /res/values-v11/ 文件夹中定义一个样式(XML 文件),其内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyTheme" parent="android:style/Theme.Holo">
        <item name="android:actionBarStyle">@style/MyActionBarStyle</item>
    </style>

    <style name="MyActionBarStyle" parent="@android:style/Widget.Holo.ActionBar">
        <item name="android:displayOptions"></item>
    </style>
</resources>

在你的AndroidManifest.xml中为你的活动设置上面定义的主题:

<activity
    ...
    android:theme="@style/MyTheme">
    ...
</activity>

这将删除图标和标题,只显示操作项。如果您只想显示标题,请使用:

<item name="android:displayOptions">showTitle</item>

或者只是应用程序的标志:

<item name="android:displayOptions">showHome</item>

或者两者都是(默认值)

<item name="android:displayOptions">showHome|showTitle</item>

还有其他选项可用,例如:showCustom、useLogo、homeAsUp。


这能够与Action Bar Sherlock一起使用吗?我正在尝试,但是我无法让它工作。 - Joel Dean
这对我不起作用,它需要API 11,而我想支持较早版本。 - Kaloyan Roussev
1
要使其在API < 11(AppCompat)上工作,只需在style块中不包含“android:”的name中重复item条目。这将访问需要覆盖以使新样式起作用的AppCompat属性。 - Abid H. Mujtaba
如果您在操作栏中显示的是标志而不是图标,您需要使用showHome|useLogo,如果只使用"useLogo",它将无法正常工作。这只是一个小提示 :) - yat0

15

尝试

getActionBar.setIcon(R.color.transparent);

那不仅仅是隐藏了它,而不是删除了它吗? - Leigh
更新:您还可以添加一个透明的PNG,其尺寸与ActionBarSherlock图标相同,这将确保您有足够的空间点击左上角的默认返回按钮。 - Adí
我在这里收到一个错误信息 - transparent 下面有下划线。 - Kaloyan Roussev
你需要在颜色中添加属性 - <color name="transparent">#00000000</color>。 - Adí
将getActionBar.setIcon(R.color.transparent);替换为getActionBar.setIcon(android.R.color.transparent);。 - Alberto Maluje
显示剩余3条评论

2

这将帮助您:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayShowTitleEnabled(false);

        //the rest of your code...
}

1
actionBar.setIcon(R.color.transparent);

actionBar.setTitle("");

1
在onCreate()中尝试这个。
ActionBar actionbar=getSupportActionBar();
actionbar.setDisplayHomeAsUpEnabled(false);
actionbar.setIcon(android.R.color.transparent);

用户 android.R.color.transparent


0
尝试这个组合。
    getSupportActionBar().setHomeButtonEnabled(false);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(false);
    getSupportActionBar().setIcon(R.color.transparent);
    getSupportActionBar().setDisplayShowTitleEnabled(true)

-2

如果您想要简单地移除整个操作栏,您可以尝试使用 hide 方法来处理操作栏:

getActionbar().hide();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接