Как удалить текст заголовка из Android ActionBar?

105

Я просматриваю Holo.Lightтему и не могу найти волшебный стиль, который нужно переопределить, чтобы избавиться от текста заголовка, который ненадолго появляется при первом запуске моего приложения.

Как я могу это сделать?

Кристофер Перри
источник

Ответы:

216

Пытаться:

 getActionBar().setDisplayShowTitleEnabled(false);

Для v.7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);
Филиппо Мацца
источник
22
вы все равно будете видеть заголовок, пока загружается панель действий, а это не то, что вам нужно. правильное решение - это то, что предложил m3n0R.
Нуман Салати
12
это должно быть getSupportActionBar (). setDisplayShowTitleEnabled (false); для v7. иначе это приведет к выполнению нулевого указателя
Амир
5
@numansalati Кто такой m3n0R? Я искал страницу и ничего не нашел
ka3ak
Когда мне следует калибровать методы? Я имею ввиду из какого метода (активности, фрагмента) его вызывать?
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 04
Это работает для скрытия заголовка при первом запуске. В другом действии вызов setTitle не работает. Есть ли способ поменять местами стили панели действий во время выполнения?
speedynomads
установка темы по умолчанию во время выполнения :)
cesards
@ domji84, Вы можете указать тему каждого действия в файле манифеста.
ashishduh
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?
GyRo
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текст заголовка все еще отображается во время загрузки панели?
Матиас
7
Используйте <item name = "android: displayOptions"> useLogo | showHome </item> вместо установки размера на 0
Джером VDL
23

В вашем манифесте

<activity android:name=".ActivityHere"
     android:label="">
легкий сыр
источник
33
Это работает, но ваше приложение не будет отображаться в окне выбора «Недавно использованные приложения»
Руперт Бейтс,
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);

это будет работать Corectly

Milaaaad
источник
6

Я пробовал это. Это поможет -

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

getSupportActionBar следует вызывать после setSupportActionBar, тем самым устанавливая панель инструментов, в противном случае - исключение 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
Не делайте этого, поскольку это приведет к сбою вашего приложения при
свертывании
3
getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().hide();

надеюсь, это поможет

МешПадукка
источник
2

Используйте следующее:

requestWindowFeature(Window.FEATURE_NO_TITLE);
Вивек
источник
Вы не можете этого сделать, если используете ActionBar. Если вы попытаетесь сделать это, приложение сразу же вылетит при открытии.
Кристофер Перри
@ChristopherPerry неправда. вы можете использовать это, чтобы удалить панель действий в коде, при условии, что вы сделали это до вызова setContentView.
numan salati
хотя это удаляет всю панель действий, а не только ее заголовок!
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и добавил свойство .NoActionBar в тему Light из Create Blank Applicationмастера Android Studios .

eyoung100
источник
Это отключит всю панель действий, а не только заголовок. И если вы хотите создать пустую панель действий, вам придется делать это для каждого отдельного представления.
AlwaysConfused
1

Просто расширьте ваш java-файл AppCompatActivityи сделайте следующее:

ActionBar actionBar = getSupportActionBar(); // support.v7
actionBar.setTitle(" ");
Суровый
источник
0

На странице manifest.xml вы можете указать адрес своей метки активности. адрес находится где-то в ваших значениях / strings.xml. тогда вы можете изменить значение тега в XML-файле на null.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title_main_activity"></string>
</resources>
Damoon
источник
0

Я новичок в Android, поэтому, возможно, я ошибаюсь ... но чтобы решить эту проблему, мы не можем просто перейти к манифесту и удалить метку активности

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

        **android:label="" >**

Работал у меня ....

Эбин Ксавьер Хосе
источник
-3
ActionBar actionBar = getActionBar();
actionBar.setTitle("");
Джо Льюис
источник
3
@Matteo Хотя это может сработать, это определенно схематично и неправильно. Фактически, он фактически не удаляет текст заголовка, он просто устанавливает его в "", так что вы не можете его видеть.
user1234