Wie entferne ich den Titeltext aus der Android ActionBar?


106

Ich schaue mir das Holo.LightThema an und finde anscheinend keinen magischen Stil zum Überschreiben, um den Titeltext zu entfernen, der beim ersten Start meiner App kurz angezeigt wird.

Wie kann ich das machen?

Antworten:


216

Versuchen:

 getActionBar().setDisplayShowTitleEnabled(false);

Für v.7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);

22
Der Titel wird weiterhin angezeigt, während die Aktionsleiste geladen wird. Dies ist nicht das, was Sie möchten. Die richtige Lösung ist das, was m3n0R vorgeschlagen hat.
numan salati

12
es sollte getSupportActionBar () sein. setDisplayShowTitleEnabled (false); für v7. Andernfalls wird eine Nullzeigerausführung erzeugt
Amir,

5
@numansalati Wer ist m3n0R? Ich habe die Seite durchsucht und nichts gefunden
ka3ak

Wann sollte ich die Methoden anrufen? Ich meine, von welcher Methode (Aktivität, Fragment) soll es aufgerufen werden?
Ka3ak

94

Ich denke das ist die richtige Antwort:

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

Was ist mit Android 4? Ich verwende ActionBarSherlock nicht, daher ist keine Ressource benannt Widget.Sherlock.Light.ActionBar.Solid.Inverse. Welchen Elternteil soll ich verwenden?
Alex Semeniuk

Holo-Thema. Standardmäßig gibt es 3 Holo-Themen, die Sie erweitern können.
Cesards

Dies funktioniert, um den Titel beim ersten Start auszublenden. In einer anderen Aktivität funktioniert der Aufruf von setTitle nicht. Gibt es eine Möglichkeit, Aktionsleistenstile zur Laufzeit auszutauschen?
Speedynomads

Festlegen des Standardthemas zur Laufzeit :)
cesards

@ domji84, Sie können das Thema jeder Aktivität in der Manifestdatei angeben.
Ashishduh

63

Ich bin sehr neu in Android, also korrigieren Sie mich, wenn ich falsch liege, aber ich denke, wenn Sie Navigationsregisterkarten in der Aktionsleiste verwenden, scheinen sie nicht vollständig linksbündig zu sein, da die Titeltextfarbe nur transparent ist und nicht. Ich bin nicht weggegangen.

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

arbeitete für mich.


Ja, Sie liegen falsch, keine Tabs in Frage und kein Holo-Licht in Ihrer Antwort
Miky

Während ich dies versuche, erhalte ich den Fehler @android: style / Widget.Holo.ActionBar erfordert API-Level 11 (aktuell min ist 10).
Jrhamza

Wenn ich diesen Stil der Aktionsleiste einer bestimmten Aktivität zuweisen möchte und nicht für alle Aktivitäten meiner Anwendung. Wie kann ich es tun? Wo platziere ich die Zeile 'android: displayOptions'? in Menu.xml? In AndroidMenifest.xml?
GyRo

43

Verstanden. Sie müssen überschreiben

android:actionBarStyle

und dann müssen Sie in Ihrem benutzerdefinierten Stil überschreiben

android:titleTextStyle

Hier ist ein Beispiel.

In meiner theme.xml:

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

Und in meiner 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>

Ich bin mir nicht sicher, warum das Setzen von textSize auf Null nicht den Trick gemacht hat (es hat den Text verkleinert, aber nicht verschwinden lassen), aber das Setzen von textColor auf transparente Werke.


3
Ja das hat geholfen. Irgendeine Idee warum android:visibility=gonehat keine Wirkung? Oder noch besser, warum wird der Titeltext setDisplayShowTitleEnabledimmer noch angezeigt, während die Leiste geladen wird?
Matthias

7
Verwenden Sie <item name = "android: displayOptions"> useLogo | showHome </ item>, anstatt die Größe auf 0 zu setzen
Jerome VDL

23

In deinem Manifest

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

33
Dies funktioniert zwar, aber Ihre App wird nicht mehr in der Auswahl "Zuletzt verwendete Apps" angezeigt
Rupert Bates,


13

Schreiben Sie diese Erklärung unter

setContentView(R.layout.activity_main);

getSupportActionBar().setDisplayShowTitleEnabled(false);

wenn Verlängerung AppCompactActivity Verwendung , getSupportActionbar()wenn Verlängerung Aktivität Verwendung getActionBar()sonst kann es geben

null pointer exception

Die Verwendung von android:label=""in AndroidManifest.xml für Aktivitäten funktioniert ebenfalls, aber Ihre App wird nicht in angezeigtRecently used apps


9

Sie haben zwei Möglichkeiten:

Erstens:

getActionBar().setDisplayShowTitleEnabled(false);

Wenn usign getActionBar()eine Nullzeigerausnahme erzeugt hat, sollten Sie getSupportActionBar()

Second verwenden

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

oder

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

6

Ich benutze diesen Code im App-Manifest

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

Meine Logodatei ist 200 * 800 Pixel groß und verwende diesen Code in main activity.java

getActionBar().setDisplayShowTitleEnabled(false);

es wird richtig funktionieren


6

Ich habe es versucht. Das wird helfen -

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

getSupportActionBar sollte nach setSupportActionBar aufgerufen werden, wodurch die Symbolleiste festgelegt wird, andernfalls NullpointerException, da keine Symbolleiste festgelegt ist. Hoffe das hilft


5

Sie können den auf jede Aktivität angewendeten Stil ändern. Wenn Sie nur das Verhalten für eine bestimmte Aktivität ändern möchten, können Sie Folgendes versuchen:

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

Um den Titel in der Aktionsleiste anzuzeigen, legen Sie die Anzeigeoptionen in onCreate () fest.

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

Titel in der Aktionsleiste ausblenden.

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

Details hier .


3

Das einzige, was wirklich für mich funktioniert hat, war hinzuzufügen:

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

Nun, war die "falsche" Antwort, aber es hilft mir bei einem ähnlichen Fall :)
Javier

1
Tun Sie dies nicht, da es Ihre Anwendung zum Absturz bringen wird, wenn es minimiert wird
jfcartier

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

hoffe das wird helfen


2

Verwenden Sie Folgendes:

requestWindowFeature(Window.FEATURE_NO_TITLE);

Sie können das nicht tun, wenn Sie die ActionBar verwenden. Wenn Sie dies versuchen, stürzt die App beim Öffnen sofort ab.
Christopher Perry

@ChristopherPerry nicht wahr. Sie können dies verwenden, um die Aktionsleiste im Code zu entfernen, vorausgesetzt, Sie tun dies, bevor Sie setContentView aufrufen.
numan salati

Dies entfernt jedoch die gesamte Aktionsleiste anstatt nur den Titel!
Bofredo

2

Wenn Sie dies nur für eine Aktivität und möglicherweise sogar dynamisch ausführen möchten, können Sie es auch verwenden

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

1

Als Problemumgehung fügen Sie einfach diese Zeile hinzu, falls Sie benutzerdefinierte Aktionen / Symbolleisten haben

this.setTitle("");

in Ihrer Aktivität


1

Obwohl all dies akzeptabel ist, können Sie Folgendes bearbeiten, wenn Ihre Aktivität nur eine Hauptaktivität enthält 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>

Ich habe parentdie .NoActionBar-Eigenschaft aktualisiert und dem Light-Design des Android Studios- Create Blank ApplicationAssistenten hinzugefügt .


Dadurch wird die gesamte Aktionsleiste deaktiviert, nicht nur der Titel. Und wenn Sie eine leere Aktionsleiste erstellen möchten, müssen Sie dies für jede einzelne Ansicht tun.
AlwaysConfused

1

Erweitern Sie einfach Ihre Java-Datei von AppCompatActivityund tun Sie dies:

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

0

Auf Ihrer manifest.xml-Seite können Sie Ihrem Aktivitätsetikett eine Adresse geben. Die Adresse befindet sich irgendwo in Ihrer values ​​/ strings.xml. Anschließend können Sie den Wert des Tags in der XML-Datei in null ändern.

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

0

Ich bin neu in Android, also irre ich mich vielleicht ... aber um dieses Problem zu lösen, können wir nicht einfach zum Manifest gehen und das Aktivitätsetikett entfernen

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

        **android:label="" >**

Arbeitete für mich ....


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

3
@Matteo Obwohl es funktionieren mag, ist es sicherlich skizzenhaft und nicht der richtige Weg, es zu tun. Tatsächlich wird der Titeltext nicht entfernt, sondern nur auf "" gesetzt, sodass Sie ihn nicht sehen können.
user1234
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.