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

Christopher Perry
źródło

Odpowiedzi:

215

Próbować:

 getActionBar().setDisplayShowTitleEnabled(false);

Wersja 7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);
Filippo Mazza
źródło
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>
cesardy
źródło
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.

sparknoob
źródło
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.

Christopher Perry
źródło
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="">
spokojne
źródło
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

Manohar Reddy
źródło
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();
Hamid
źródło
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

Milaaaad
źródło
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

kenobiwan
źródło
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 .

Siqi Liu
źródło
3

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

<activity 
    android:name=".ActivityHere"
    android:label=""
>
Bez zmian Andreas
źródło
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

MeshPadukka
źródło
2

Użyj następujących:

requestWindowFeature(Window.FEATURE_NO_TITLE);
Vivek
źródło
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);
Heiko Rupp
źródło
1

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

this.setTitle("");

w swojej aktywności

Mihsen
źródło
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.

eyoung100
źródło
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(" ");
Szorstki
źródło
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>
Damoon
źródło
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 ....

Ebin Xavier Jose
źródło
-3
ActionBar actionBar = getActionBar();
actionBar.setTitle("");
Joe Lewis
źródło
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