如何从Android ActionBar中删除标题文本?


Answers:


216

尝试:

 getActionBar().setDisplayShowTitleEnabled(false);

对于v.7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);

22
在加载操作栏时,您仍然会看到标题,这不是您想要的。正确的解决方案是m3n0R提出的建议。
努曼萨拉蒂13年

12
它应该是getSupportActionBar()。setDisplayShowTitleEnabled(false); 对于v7。否则,它将产生空指针执行
Amir

5
@numansalati谁是m3n0R?我搜索了该页面,
但未

我什么时候应该校准这些方法?我的意思是应该从哪个方法(活动,片段)中调用它?
ka3ak

94

我认为这是正确的答案:

<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。我应该使用哪个父母?
Alex Semeniuk

全息主题。默认情况下,您可以扩展3个整体主题。
cesards 2013年

这适用于在首次启动时隐藏标题。在另一个活动中,调用setTitle不起作用。有没有办法在运行时交换操作栏样式?
speedynomads 2013年

在运行时设置默认主题:)

@ domji84,您可以在清单文件中指定每个活动的主题。
ashishduh 2014年

63

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

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

为我工作。


是的,您错了,没有选项卡出现了问题,答案也没有光亮
miky

在尝试时,出现此错误,@ android:style / Widget.Holo.ActionBar需要API级别11(当前最小值为10)。
jrhamza

如果我想将此样式分配给特定活动的操作栏,而不是我的应用程序的所有活动。我该怎么做?我在哪里放置“ android:displayOptions”行?在Menu.xml中?在AndroidMenifest.xml中?
陀螺仪

43

得到它了。你必须重写

android:actionBarStyle

然后您必须以自定义样式覆盖

android:titleTextStyle

这是一个样本。

在我的themes.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设置为透明。


3
是的,那有帮助。知道为什么android:visibility=gone无效吗?还是更好,为什么setDisplayShowTitleEnabled在栏加载时仍显示标题文本?
马提亚斯(Matthias)2012年

7
使用<item name =“ android:displayOptions”> useLogo | showHome </ item>而不是将大小设置为0
Jerome VDL

23

在您的清单中

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

33
这确实可行,但将阻止您的应用程序出现在“最近使用的应用程序”选择器中
Rupert Bates

1
这使应用程序没有名字的手机应用程序/主屏幕
Nimitack

13

将此语句写在

setContentView(R.layout.activity_main);

getSupportActionBar().setDisplayShowTitleEnabled(false);

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

null pointer exception

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


9

您有两种选择:

第一:

getActionBar().setDisplayShowTitleEnabled(false);

如果usign getActionBar()产生了空指针异常,则应使用getSupportActionBar()

Second

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

要么

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

6

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

<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);

它会正确地工作


6

我试过了 这将有助于-

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

应该在setSupportActionBar之后调用getSupportActionBar,从而设置工具栏,否则应设置NullpointerException,因为未设置任何工具栏。希望这可以帮助


5

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

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);

详细信息在这里


3

唯一对我有用的是添加:

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

很好的是“错误的”答案,但是它可以帮助我解决类似的情况:)
哈维尔

1
不要这样做,因为最小化它会使您的应用程序崩溃
jfcartier 2014年

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

希望这会有所帮助


2

使用以下内容:

requestWindowFeature(Window.FEATURE_NO_TITLE);

如果使用ActionBar,则无法执行此操作。如果您尝试执行此操作,则该应用在打开时将立即崩溃。
克里斯托弗·佩里

@ChristopherPerry不正确。您可以使用它来删除代码中的操作栏,前提是您在调用setContentView之前已将其删除。
努曼萨拉蒂13年

但是,这将删除整个操作栏,而不仅仅是标题!
bofredo

2

如果您只想针对一项活动甚至是动态地进行操作,则还可以使用

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

1

作为解决方法,如果您有自定义操作/工具栏,只需添加此行

this.setTitle("");

在您的活动中


1

尽管所有这些都可以接受,但是如果您的活动仅包含一个主要活动,则可以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从Android Studios Create Blank Application向导更新了.NoActionBar属性并将其添加到Light主题。


这将禁用整个操作栏,而不仅是标题。而且,如果您要创建空白操作栏,则必须为每个单独的视图进行操作。
AlwaysConfused

1

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

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

0

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

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

0

我是Android的新手,所以也许我错了...但是要解决此问题,我们不能直接进入清单并删除活动标签

<activity
        android:name=".Bcft"
        android:screenOrientation="portrait"

        **android:label="" >**

为我工作...


-3
ActionBar actionBar = getActionBar();
actionBar.setTitle("");

3
@Matteo尽管它可能会起作用,但它肯定是粗略的,而不是正确的方法。实际上,它实际上并没有删除标题文本,只是将其设置为“”,所以您看不到它。
user1234 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.