Jak usunąć tekst tytułu z ActionBar Androida?


105

Przeglądam Holo.Lightmotyw i nie mogę znaleźć magicznego stylu do zastąpienia, aby pozbyć się tekstu tytułowego, który pojawia się na krótko po pierwszym uruchomieniu mojej aplikacji.

Jak mogę to zrobić?

Odpowiedzi:


215

Próbować:

 getActionBar().setDisplayShowTitleEnabled(false);

Wersja 7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);

22
nadal będziesz widzieć tytuł podczas ładowania paska akcji, co nie jest tym, czego chcesz. właściwym rozwiązaniem jest to, co sugerował m3n0R.
numan salati

12
powinno to być getSupportActionBar (). setDisplayShowTitleEnabled (false); dla v7. w przeciwnym razie spowoduje wykonanie wskaźnika zerowego
Amir

5
@numansalati Kto to jest m3n0R? Przeszukałem stronę i nic nie znalazłem
ka3ak

Kiedy powinienem wywołać metody? Chodzi mi o to, z jakiej metody (działania, fragmentu) ma się nazywać?
ka3ak

94

Myślę, że to jest właściwa odpowiedź:

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

A co z Androidem 4? Nie używam ActionBarSherlock, więc nie ma zasobu o nazwie Widget.Sherlock.Light.ActionBar.Solid.Inverse. Jakiego rodzica powinienem użyć?
Alex Semeniuk

Motyw Holo. Domyślnie są 3 motywy holo, które możesz rozszerzyć.
cesards

Działa to w przypadku ukrycia tytułu przy pierwszym uruchomieniu. W innym działaniu wywołanie setTitle nie działa. Czy istnieje sposób na zamianę stylów paska akcji w czasie wykonywania?
speedynomads

ustawianie domyślnego motywu w środowisku wykonawczym :)
cesards

@ domji84, możesz określić motyw każdego działania w pliku manifestu.
ashishduh

63

Jestem bardzo nowy w Androidzie, więc popraw mnie, jeśli się mylę, ale myślę, że jeśli zdecydujesz się użyć zakładek nawigacyjnych na pasku akcji, wydawało się, że nie są one całkowicie wyrównane do lewej, ponieważ kolor tekstu tytułu jest tylko przezroczysty i nie ma zniknął.

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

pracował dla mnie.


tak, mylisz się, brak zakwestionowanych zakładek i brak światła holo w Twojej odpowiedzi
miky

Kiedy próbuję tego, otrzymuję ten błąd, @android: style / Widget.Holo.ActionBar wymaga API poziomu 11 (aktualny min to 10).
jrhamza

Jeśli chcę przypisać ten styl do paska akcji określonego działania, a nie do wszystkich działań mojej aplikacji. Jak mogę to zrobić? gdzie umieścić wiersz „android: displayOptions”? w Menu.xml? W AndroidMenifest.xml?
GyRo

43

Rozumiem. Musisz nadpisać

android:actionBarStyle

a następnie w swoim niestandardowym stylu musisz nadpisać

android:titleTextStyle

Oto próbka.

W moim pliku themes.xml:

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

A w moim 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>

Nie jestem pewien, dlaczego ustawienie textSize na zero nie załatwiło sprawy (skurczyło tekst, ale nie sprawiło, że zniknął), ale ustawienie textColor na transparent działa.


3
Tak, to pomogło. Każdy pomysł, dlaczego android:visibility=gonenie ma efektu? Albo jeszcze lepiej, dlaczego setDisplayShowTitleEnablednadal wyświetla tekst tytułu, gdy pasek się ładuje?
Matthias

7
Użyj <item name = "android: displayOptions"> useLogo | showHome </item> zamiast ustawiać rozmiar na 0
Jerome VDL,

23

W swoim Manifeście

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

33
To działa, ale spowoduje, że Twoja aplikacja nie będzie pojawiać się w oknie wyboru „Ostatnio używane aplikacje”
Rupert Bates

1
to sprawia, że ​​aplikacja nie ma nazwy w aplikacjach telefonu / ekranie głównym
Nimitack

13

Zapisz to oświadczenie pod

setContentView(R.layout.activity_main);

getSupportActionBar().setDisplayShowTitleEnabled(false);

jeśli rozszerzasz AppCompactActivity, użyj getSupportActionbar()jeśli rozszerzasz Activity, użyj getActionBar()else, które może dać

null pointer exception

używanie android:label=""in AndroidManifest.xml for activity również działa, ale Twoja aplikacja nie pojawi się wRecently used apps


9

masz dwie możliwości:

po pierwsze:

getActionBar().setDisplayShowTitleEnabled(false);

Jeśli użyliśmy getActionBar()wyjątku wskaźnika zerowego, należy użyć getSupportActionBar()

Second

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

lub

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

6

używam tego kodu w manifeście aplikacji

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

moje logo ma rozmiar 200 * 800 pikseli i użyj tego kodu w pliku main activity.java

getActionBar().setDisplayShowTitleEnabled(false);

będzie działać poprawnie


6

Próbowałem tego. To pomoże -

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

getSupportActionBar należy wywołać po setSupportActionBar, ustawiając w ten sposób pasek narzędzi, w przeciwnym razie NullpointerException, ponieważ nie ma zestawu pasków narzędzi. Mam nadzieję że to pomoże


5

Możesz zmienić styl zastosowany do każdego działania lub jeśli chcesz zmienić tylko zachowanie dla określonego działania, możesz spróbować tego:

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

Aby wyświetlić tytuł na pasku akcji, ustaw opcje wyświetlania w onCreate ()

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

Aby ukryć tytuł na pasku akcji.

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

Szczegóły tutaj .


3

Jedyną rzeczą, która naprawdę zadziałała, było dodanie:

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

no cóż, była to "zła" odpowiedź, jednak pomogła mi w podobnym przypadku :)
Javier

1
Nie rób tego, ponieważ spowoduje to awarię aplikacji po zminimalizowaniu
jfcartier

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

mam nadzieję, że to pomoże


2

Użyj następujących:

requestWindowFeature(Window.FEATURE_NO_TITLE);

Nie możesz tego zrobić, jeśli używasz ActionBar. Jeśli spróbujesz to zrobić, aplikacja natychmiast ulegnie awarii po otwarciu.
Christopher Perry,

@ChristopherPerry nie jest prawdą. możesz użyć tego do usunięcia paska akcji w kodzie, pod warunkiem, że zrobisz to przed wywołaniem setContentView.
numan salati

jednak oznacza to usunięcie całego paska akcji zamiast tylko jego tytułu!
bofredo

2

Jeśli chcesz to zrobić tylko dla jednej czynności, a może nawet dynamicznie, możesz również użyć

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

1

aby obejść ten problem, po prostu dodaj ten wiersz, jeśli masz niestandardowe paski akcji / narzędzi

this.setTitle("");

w swojej aktywności


1

Chociaż wszystkie z nich są dopuszczalne, jeśli Twoja aktywność obejmuje tylko główną aktywność, możesz edytować w następujący res\values\styles.xmlsposób:

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

Zaktualizowałem parenti dodałem właściwość .NoActionBar do motywu Light z Create Blank Applicationkreatora Android Studios Wizard.


Spowoduje to wyłączenie całego paska akcji, a nie tylko tytułu. A jeśli chcesz utworzyć pusty pasek akcji, będziesz musiał to zrobić dla każdego widoku.
AlwaysConfused

1

Po prostu rozszerz plik java z AppCompatActivityi wykonaj następujące czynności:

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

0

Na swojej stronie manifest.xml możesz podać adres swojej etykiecie aktywności. adres znajduje się gdzieś w pliku values ​​/ strings.xml. wtedy możesz zmienić wartość tagu w pliku xml na null.

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

0

Jestem nowy na Androidzie, więc może się mylę ... ale aby rozwiązać ten problem, nie możemy po prostu przejść do manifestu i usunąć etykiety aktywności

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

        **android:label="" >**

Pracował dla mnie ....


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

3
@Matteo Chociaż może to działać, z pewnością jest szkicowe i nie jest właściwym sposobem, aby to zrobić. W rzeczywistości nie usuwa tekstu tytułu, po prostu ustawia go na „”, więc nie możesz go zobaczyć.
user1234
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.