【问题标题】:Remove application icon and title from Honeycomb action bar从 Honeycomb 操作栏中删除应用程序图标和标题
【发布时间】:2011-08-08 21:47:34
【问题描述】:

如何删除默认出现在操作栏中的应用程序图标和标题?

这里有一个类似的问题:Can i hide the App Icon from the Action Bar in Honeycomb?,但是没有讲怎么做?

【问题讨论】:

    标签: android android-actionbar android-3.0-honeycomb


    【解决方案1】:

    ActionBar 上拨打setDisplayShowHomeEnabled()setDisplayShowTitleEnabled(),您可以通过拨打getActionBar() 获得。

    【讨论】:

    • 有什么方法可以通过 XML 删除图标?
    • 刚刚想通了...您使用 abDisplayOptions 并设置所需的 useLogo、showHome、homeAsUp、showTitle 和 showCustom 组合。我只想要没有图标的标题,所以我做了<item name="abDisplayOptions">showTitle</item>
    • @James 尝试了你的 xml letter for letter 并且没有工作(显然),所以为了拯救其他人找到正确的东西,例如<item name="android:displayOptions">useLogo|showHome|showTitle</item>
    • @Cel 我很确定这是因为我使用了 Action Bar Sherlock 而你没有。这就是名称不同的原因,但代码基本相同。我应该使用标准操作栏来涵盖更一般的情况。对不起!
    • 是的,它工作得很好,但它也会从操作栏中删除 homeUpIndicatior,所以如果需要 HomeUpIcon 而不需要徽标图标,那么你可以设置 getActionBar.setIcon(R.color.transparent);
    【解决方案2】:

    如果你想用 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 有效吗?我正在尝试,但我无法让它工作。
    • 这不适合我,它需要 API 11,我想支持早期版本
    • 要使其适用于 API style 块中的 item 条目在 @ 中没有“android:” 987654328@。这会访问 AppCompat 属性,这些属性需要被覆盖以使新样式起作用。
    • 如果你显示的是一个标志而不是一个图标(在操作栏中),你想使用showHome|useLogo,如果你只使用“useLogo”,它是行不通的。这只是一个区别:)
    【解决方案3】:

    试试

    getActionBar.setIcon(R.color.transparent);
    

    【讨论】:

    • 这不是隐藏(而不是删除)它吗?
    • 是的,这会隐藏它。
    • 但这和“删除它”一样吗?通常,不可见元素仍会占用空间。但是 removed 元素没有。那么上面是否真的达到了和accepted answer一样的效果。
    • 那种。它不占用任何空间。
    • 更新:您还可以在 ActionBarSherlock 图标的尺寸中添加透明 PNG,这将确保您有足够的空间来点击左上角的默认返回按钮。
    【解决方案4】:

    这将对您有所帮助:

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            ActionBar actionBar = getActionBar();
            actionBar.setDisplayShowHomeEnabled(false);
            actionBar.setDisplayShowTitleEnabled(false);
    
            //the rest of your code...
    }
    

    【讨论】:

      【解决方案5】:
      actionBar.setIcon(R.color.transparent);
      
      actionBar.setTitle("");
      

      【讨论】:

        【解决方案6】:

        在 onCreate() 中试试这个

        ActionBar actionbar=getSupportActionBar();
        actionbar.setDisplayHomeAsUpEnabled(false);
        actionbar.setIcon(android.R.color.transparent);
        

        用户 android.R.color.transparent

        【讨论】:

          【解决方案7】:

          试试这个组合

              getSupportActionBar().setHomeButtonEnabled(false);
              getSupportActionBar().setDisplayHomeAsUpEnabled(true);
              getSupportActionBar().setDisplayShowHomeEnabled(false);
              getSupportActionBar().setIcon(R.color.transparent);
              getSupportActionBar().setDisplayShowTitleEnabled(true)
          

          【讨论】:

            【解决方案8】:

            如果您想简单地删除整个动作条,您可以尝试动作条的hide 方法:

            getActionbar().hide();
            

            【讨论】: