Як видалити текст заголовка з Android ActionBar?


106

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

Як я можу це зробити?

Відповіді:


216

Спробуйте:

 getActionBar().setDisplayShowTitleEnabled(false);

Для версії 7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);

22
Ви все одно побачите заголовок, поки завантажується панель дій, а це не те, що потрібно. правильне рішення - це те, що запропоновано m3n0R.
numan salati

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. Якого батька я повинен використовувати?
Олексій Семенюк

Тема Холо. За замовчуванням є 3 голо-теми, на які можна поширити.
цезард

Це працює для приховування заголовку при першому запуску. В іншій діяльності виклик setTitle не працює. Чи є спосіб замінити стилі панелі дій під час виконання?
speedynomads

встановлення теми за замовчуванням під час виконання :)
cesards

@ domji84, Ви можете вказати тему кожної дії у файлі маніфесту.
ашишдух

63

Я дуже новачок в Android, тому виправте мене, якщо я помиляюся, але я думаю, що якщо ви вирішите використовувати навігаційні вкладки на панелі дій, вони, здавалося, не повністю вирівняні, оскільки колір тексту заголовка лише прозорий і не має " t пішов геть.

<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).
jrhamza

Якщо я хочу призначити цей стиль на панелі дій певної діяльності, а не на всі дії моєї програми. Як я можу це зробити? куди я кладу рядок 'android: displayOptions'? в Menu.xml? У AndroidMenifest.xml?
GyRo

43

Зрозумів. Ви повинні перекрити

android:actionBarStyle

і тоді у вашому користувальницькому стилі ви повинні перекрити

android:titleTextStyle

Ось зразок.

У моїх темах.xml:

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

І в моїх стилях.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
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()якщо розширення використання діяльності getActionBar()ще може дати

null pointer exception

використовуючи android:label=""в 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 пікселів і використовуйте цей код у основній діяльності.java

getActionBar().setDisplayShowTitleEnabled(false);

він буде працювати коректно


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
Не робіть цього, оскільки це призведе до краху вашої програми при мінімізації
jfcartier


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 .


Це відключить весь рядок дій не лише заголовок. І якщо ви хочете створити порожню панель дій, вам доведеться робити це для кожного перегляду.
Завжди зв'язаний

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>

0

Я новачок в Android, тому, можливо, я помиляюся ... але, щоб вирішити цю проблему, я не можу просто перейти до маніфесту та видалити мітку активності

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

        **android:label="" >**

Працювали для мене….


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

3
@Matteo Хоча це може працювати, це, безумовно, схематично і не правильний спосіб зробити це. Насправді він фактично не видаляє текст заголовка, він просто встановлює його на "", так що ви не можете його бачити.
користувач1234
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.