【问题标题】:How do you remove the title text from the Android ActionBar?如何从 Android ActionBar 中删除标题文本?
【发布时间】:2011-10-05 01:38:52
【问题描述】:

我正在浏览 Holo.Light 主题,但我似乎找不到可以覆盖的神奇样式来消除我的应用首次启动时短暂显示的标题文本。

我该怎么做?

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    试试:

     getActionBar().setDisplayShowTitleEnabled(false);
    

    对于 v.7:

     getSupportActionBar().setDisplayShowTitleEnabled(false);
    

    【讨论】:

    • 在加载操作栏时您仍然会看到标题,这不是您想要的。正确的解决方案是 m3n0R 建议的。
    • 应该是getSupportActionBar().setDisplayShowTitleEnabled(false);对于 v7 。否则它将产生空指针执行
    • @numansalati m3n0R 是谁?我已经搜索了该页面,但什么也没找到
    • 我应该什么时候调用这些方法?我的意思是应该从哪个方法(活动、片段)调用它?
    • 您只需要一次,在您的onCreate 中的MainActivity.tk 中。这是正确的解决方案,忽略上面的 cmets。
    【解决方案2】:

    我认为这是正确的答案:

    <style name="AppTheme" parent="Theme.Sherlock.Light.DarkActionBar">
        <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
        <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    </style>
    
    <style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
        <item name="android:displayOptions">showHome|useLogo</item>
        <item name="displayOptions">showHome|useLogo</item>
    </style>
    

    【讨论】:

    • Android 4 怎么样?我没有使用 ActionBarSherlock,所以没有名为 Widget.Sherlock.Light.ActionBar.Solid.Inverse 的资源。我应该使用哪个父母?
    • 全息主题。默认情况下,您可以扩展 3 个全息主题。
    • 这适用于在首次启动时隐藏标题。在另一个调用 setTitle 的活动中不起作用。有没有办法在运行时交换操作栏样式?
    • 在运行时设置默认主题:)
    • @domji84, 您可以在清单文件中指定每个活动的主题。
    【解决方案3】:

    我对 Android 很陌生,所以如果我错了请纠正我,但我认为如果您决定使用操作栏上的导航选项卡,它们似乎没有完全左对齐,因为标题文本颜色只是透明的并没有消失。

    <style name="CustomActionBarStyle" parent="@android:style/Widget.Holo.ActionBar">
         <item name="android:displayOptions">useLogo|showHome</item>
    </style>
    

    为我工作。

    【讨论】:

    • 是的,你错了,你的答案没有标签,也没有全息灯
    • 在尝试此操作时,出现此错误,@android:style/Widget.Holo.ActionBar 需要 API 级别 11(当前最小值为 10)。
    • 如果我想将此样式分配给特定活动的操作栏,而不是应用程序的所有活动。我该怎么做?我在哪里放置'android:displayOptions'行?在 Menu.xml 中?在 AndroidMenifest.xml 中?
    • 这应该如何工作?请为端到端解决方案添加更多详细信息。
    【解决方案4】:

    知道了。你必须覆盖

    android:actionBarStyle
    

    然后在您的自定义样式中,您必须覆盖

    android:titleTextStyle
    

    这是一个示例。

    在我的主题.xml 中:

    <style name="CustomActionBar" parent="android:style/Theme.Holo.Light">
            <item name="android:actionBarStyle">@style/CustomActionBarStyle</item>
    </style>
    

    在我的styles.xml中:

    <style name="CustomActionBarStyle" parent="android:style/Widget.Holo.ActionBar">
            <item name="android:titleTextStyle">@style/NoTitleText</item>
            <item name="android:subtitleTextStyle">@style/NoTitleText</item>
    </style>
    
    <style name="NoTitleText">
            <item name="android:textSize">0sp</item>
            <item name="android:textColor">#00000000</item>
    </style>
    

    我不知道为什么将 textSize 设置为零没有效果(它缩小了文本,但没有让它消失),但是将 textColor 设置为透明有效。

    【讨论】:

    • 是的,这有帮助。知道为什么android:visibility=gone 没有效果吗?或者更好的是,为什么setDisplayShowTitleEnabled 在加载栏时仍然显示标题文本?
    • 使用 useLogo|showHome 而不是将 size 设置为 0
    【解决方案5】:

    在你的清单中

    <activity android:name=".ActivityHere"
         android:label="">
    

    【讨论】:

    • 这确实有效,但会阻止您的应用出现在“最近使用的应用”选择器中
    • 这使应用程序在手机应用程序/主屏幕上没有名称
    • 嗨@RupertBates,@Nimitack,如果您在application 选项卡中指定您的应用名称,即&lt;application android:label="your_app_name"&gt;...,它似乎有效
    【解决方案6】:

    下面写下这个语句
    setContentView(R.layout.activity_main);
    
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    

    如果扩展 AppCompactActivity 使用 getSupportActionbar() 如果扩展 Activity 使用 getActionBar() 否则它可能会给

    null pointer exception
    

    AndroidManifest.xml 中使用android:label="" 进行活动也可以,但您的应用不会出现在Recently used apps

    【讨论】:

      【解决方案7】:

      您有两个选择:

      第一个:

      getActionBar().setDisplayShowTitleEnabled(false);
      

      如果使用getActionBar()产生空指针异常,你应该使用getSupportActionBar()

      第二

      getSupportActionBar().setTitle("your title");
      

      getSupportActionBar().setDisplayShowTitleEnabled(false);
      getSupportActionBar().hide();
      

      【讨论】:

        【解决方案8】:

        您可以更改应用于每个活动的样式,或者如果您只想更改特定活动的行为,您可以尝试以下操作:

        setDisplayOptions(int options, int mask) --- Set selected display 
          or
        setDisplayOptions(int options) --- Set display options.
        

        要在操作栏上显示标题,请在 onCreate() 中设置显示选项

        getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE);
        

        在操作栏上隐藏标题。

        getSupportActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
        

        详情here.

        【讨论】:

          【解决方案9】:

          我在应用清单中使用此代码

          <application
                  android:allowBackup="true"
                  android:icon="@drawable/ic_launcher"
                  android:logo="@drawable/logo2"
                  android:label="@string/title_text"
                  android:theme="@style/Theme.Zinoostyle" >
          

          我的标志文件是 200*800 像素 并在 main activity.java 中使用此代码

          getActionBar().setDisplayShowTitleEnabled(false);
          

          它会正常工作

          【讨论】:

            【解决方案10】:

            我试过这个。这会有所帮助 -

            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
                setSupportActionBar(toolbar);
                getSupportActionBar().setDisplayShowTitleEnabled(false);
            

            getSupportActionBar 应该在setSupportActionBar 之后调用,从而设置工具栏,否则,NullpointerException 因为没有设置工具栏。 希望这会有所帮助

            【讨论】:

              【解决方案11】:

              唯一真正对我有用的是添加:

              <activity 
                  android:name=".ActivityHere"
                  android:label=""
              >
              

              【讨论】:

              • 好吧是“错误”的答案,但它可以帮助我解决类似的情况:)
              • 不要这样做,因为它会在最小化时崩溃您的应用程序
              【解决方案12】:
              getSupportActionBar().setDisplayShowTitleEnabled(false);
                  getSupportActionBar().hide();
              

              希望这会有所帮助

              【讨论】:

                【解决方案13】:

                如果您只想为一项活动执行此操作,甚至可能是动态的,您也可以使用

                ActionBar actionBar = getActionBar();
                actionBar.setDisplayOptions(actionBar.getDisplayOptions() ^ ActionBar.DISPLAY_SHOW_TITLE);
                

                【讨论】:

                  【解决方案14】:

                  使用以下内容:

                  requestWindowFeature(Window.FEATURE_NO_TITLE);
                  

                  【讨论】:

                  • 如果您使用的是 ActionBar,则不能这样做。如果您尝试这样做,应用程序将在打开时立即崩溃。
                  • @ChristopherPerry 不正确。您可以使用它来删除代码中的操作栏,前提是您在调用 setContentView 之前执行此操作。
                  • 不过,这将删除整个操作栏,而不仅仅是其标题!
                  【解决方案15】:

                  作为一种解决方法,只需添加此行以防您有自定义操作/工具栏

                  this.setTitle("");
                  

                  在您的活动中

                  【讨论】:

                    【解决方案16】:

                    虽然所有这些都可以接受,但如果您的活动只包含一个主要活动,您可以像这样编辑res\values\styles.xml

                    <resources>
                    
                        <!-- Base application theme. -->
                        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
                            <!-- Customize your theme here. -->
                            <item name="colorPrimary">@color/colorPrimary</item>
                            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
                            <item name="colorAccent">@color/colorAccent</item>
                        </style>
                    
                    </resources>
                    

                    我已更新 parent 并将 .NoActionBar 属性添加到来自 Android Studios Create Blank Application Wizard 的 Light 主题。

                    【讨论】:

                    • 这将禁用整个操作栏,而不仅仅是标题。如果您想创建空白操作栏,则必须为每个视图都这样做。
                    【解决方案17】:

                    只需从 AppCompatActivity 扩展您的 java 文件并执行以下操作:

                    ActionBar actionBar = getSupportActionBar(); // support.v7
                    actionBar.setTitle(" ");
                    

                    【讨论】:

                      【解决方案18】:

                      在您的 manifest.xml 页面中,您可以为您的活动标签提供地址。地址在您的 values/strings.xml 中的某个位置。那么你可以将xml文件中标签的值改为null。

                      <?xml version="1.0" encoding="utf-8"?>
                      <resources>
                          <string name="title_main_activity"></string>
                      </resources>
                      

                      【讨论】:

                        【解决方案19】:

                        我是 Android 新手,所以也许我错了……但要解决这个问题,我们不能只去清单并删除活动标签

                        <activity
                                android:name=".Bcft"
                                android:screenOrientation="portrait"
                        
                                **android:label="" >**
                        

                        为我工作....

                        【讨论】:

                          【解决方案20】:
                          ActionBar actionBar = getActionBar();
                          actionBar.setTitle("");
                          

                          【讨论】:

                          • @Matteo 虽然它可能有效,但它肯定是粗略的,不是正确的方法。事实上,它并没有真正删除标题文本,它只是将它设置为“”,这样你就看不到它了。
                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多