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?

Christopher Perry
quelle

Antworten:

216

Versuchen:

 getActionBar().setDisplayShowTitleEnabled(false);

Für v.7:

 getSupportActionBar().setDisplayShowTitleEnabled(false);
Filippo Mazza
quelle
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>
cesards
quelle
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.

sparknoob
quelle
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.

Christopher Perry
quelle
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="">
easycheese
quelle
33
Dies funktioniert zwar, aber Ihre App wird nicht mehr in der Auswahl "Zuletzt verwendete Apps" angezeigt
Rupert Bates,
1
Dadurch hat
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

Manohar Reddy
quelle
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();
Hamid
quelle
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

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

Kenobiwan
quelle
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 .

Siqi Liu
quelle
3

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

<activity 
    android:name=".ActivityHere"
    android:label=""
>
ShiftlessAndreas
quelle
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

MeshPadukka
quelle
2

Verwenden Sie Folgendes:

requestWindowFeature(Window.FEATURE_NO_TITLE);
Vivek
quelle
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);
Heiko Rupp
quelle
1

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

this.setTitle("");

in Ihrer Aktivität

Mihsen
quelle
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 .

eyoung100
quelle
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(" ");
HarsH
quelle
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>
Damoon
quelle
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 ....

Ebin Xavier Jose
quelle
-3
ActionBar actionBar = getActionBar();
actionBar.setTitle("");
Joe Lewis
quelle
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