Ich versuche, eine einfache Anwendung mit der Bibliothek android-support-v7: 21 zu erstellen.
Codefragmente
:
MainActivity.java
public class MainActivity extends ActionBarActivity {
Toolbar mActionBarToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
mActionBarToolbar.setTitle("My title");
setSupportActionBar(mActionBarToolbar);
}
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_actionbar"
android:background="@null"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:fitsSystemWindows="true" />
</LinearLayout>
Anstelle von "Mein Titel" in der Symbolleiste wird jedoch% Anwendungsname% angezeigt.
Scheint, als hätte die setTitle
Methode keine Wirkung.
Ich möchte "Mein Titel" zeigen.
UPD:
Vorher styles.xml
war:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="windowActionBar">false</item>
</style>
Also dachte ich, dass die Aktionsleiste nicht verwendet wird. Ich füge NoActionBar
dem übergeordneten Stil hinzu:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
</style>
Das Problem ist jedoch nicht gelöst.
android
toolbar
android-support-library
krossovochkin
quelle
quelle
Antworten:
Die Lösung gefunden:
Anstatt:
Ich benutzte:
Und es funktioniert.
quelle
getSupportActionBar().setTitle("My title");
kann 'java.lang.NullPointerException' produzierensetSupportActionBar(mToolbar)
natürlich vergessen, aufzurufen, erhalten Sie keine Ausnahme. Wenn Sie es aufgerufen haben, ignorieren Sie diese Meldung einfach. Lesen Sie einfach - developer.android.com/training/appbar/setting-up.htmlFür alle, die den Titel über die Symbolleiste einrichten müssenLesen Sie dies, wenn Sie einige Zeit nach dem Festlegen der SupportActionBar .
Die interne Implementierung der Support-Bibliothek prüft nur, ob die Symbolleiste zum Zeitpunkt der Einrichtung der SupportActionBar einen Titel (nicht null) hat. Wenn dies der Fall ist, wird dieser Titel anstelle des Fenstertitels verwendet. Sie können dann einen Dummy-Titel festlegen, während Sie den tatsächlichen Titel laden.
später...
quelle
this.setTitle("Title")
, wothis
- ist ein Verweis auf eine Aktivität.Die obige Antwort ist völlig richtig, funktioniert aber nicht für mich.
Ich habe mein Problem mit den folgenden Dingen gelöst.
Eigentlich ist mein XML so:
Ich habe alle Optionen ausprobiert und schließlich habe ich sie gerade entfernt,
CollapsingToolbarLayout
weil ich sie in diesem speziellenXML
So My Final XML nicht verwenden muss wie folgt:Jetzt müssen Sie
setTitle()
wie oben Antwort verwenden:Jetzt Wenn Sie verwenden möchten ,
CollapsingToolbarLayout
undToolbar
zusammen , dann müssen Sie verwendensetTitle()
vonCollapsingToolbarLayout
Möge es dir helfen. Danke dir.
quelle
CollapsingToolbarLayout
gelöste Problem zu entfernenCollapsingToolbarLayout
?Sie können einfach einen beliebigen Aktivitätsnamen mit ändern
quelle
title = "Title"
in Kotlin oder vielleichtthis.setTitle("Title")
in Java.Versuchen Sie dies, Sie können den Titel direkt in XML definieren:
quelle
So legen Sie den Titel für jeden Navbar-Fragmenttitel fest
quelle
Versuchen Sie dies .. diese Methode funktioniert für mich .. !! hoffe es kann jemandem helfen .. !!
Versuchen Sie das folgende Snippet, um das Logo in der Symbolleiste anzuzeigen. // Zeichnbar setzen
Lass mich das Ergebnis wissen.
quelle
quelle
Weitere Informationen finden Sie unter https://code.google.com/p/android/issues/detail?id=77763 . Anscheinend soll es so funktionieren. Sobald Sie den
setSupportActionBar()
Methodenaufruf aufrufen, liegt es in der Verantwortung des ActionBar-Delegaten, den Aufruf an die richtige Ansicht weiterzuleiten.quelle
Ich habe versucht, die Symbolleiste aus dem Fragment umzubenennen
Es hat mir geholfen, ich hoffe, jemand anderem zu helfen
Bildschirmfoto:
quelle
Es geht nicht nur darum
.setTitle
Weitere Methoden der Support Toolbar (Appcompat v7)
onCreate
funktionieren nur mitgetSupportActionBar().method()
und arbeite nicht mit
mToolbar.method()
Beispiele:
obwohl die nächsten Methoden ohne
getSupportActionBar()
in gut funktionierenonCreate
Problem nur mit
onCreate
Ereignis, können Sie immer nochmToolbar.setTitle()
später verwenden, anstatt zu nervengetSupportActionBar().setTitle()
, zum Beispiel, wenn Sie dies hinzufügenonCreate
, wird es funktionieren (weil es später ausgeführt wird, danachonCreate
)Ich bevorzuge die Verwendung dieser Lösung https://stackoverflow.com/a/35430590/4548520 als https://stackoverflow.com/a/26506858/4548520, da sie bequemer zu verwenden ist, wenn Sie den Titel mehrmals ändern (in verschiedenen Funktionen)
mToolbar.setTitle()
als längergetSupportActionBar().setTitle()
und Sie sehen keine nervige Benachrichtigung über Null-Ausnahme wie beigetSupportActionBar().setTitle()
quelle
Für alle , die den Titel über die Toolbar einige Zeit nach dem Einstellen der SupportActionBar (@sorianiv) einrichten muss und Sie
Toolbar
befindet sich in einemCollapsingToolbarLayout
, dies lesen:Dann später,
quelle
Der Anwendungstitel wird nicht bei jeder Aktivität als Standardtitel angezeigt. Sie können bei jeder Aktivität einen anderen Titel einfügen. Fügen Sie in Ihrer Aktivitätsdatei unter onCreate einfach eine einzelne Zeile ein, um den Titel festzulegen.
Ändern Sie einfach den Text "Ihr Titel hier" in Ihren Text.
quelle
Verwenden Sie dies einfach in Ihrem Adapter, wobei MainActivity Ihre AppCompactActivity ist. Nennen Sie es von überall.
quelle
Ich habe es geschafft mit -
quelle
post
wenn Sie den Titel im UI-Thread ändern, was meiner Meinung nach in 90% der Fälle der Fall ist.Wenn Sie
CollapsibleToolbarLayout
zusammen mit verwendenToolbar
Sie den Titel in beiden Layouts festlegenLegen Sie Ihre Symbolleiste als Aktionsleiste in der
onCreate
Methode festAktualisieren Sie später einfach den Titel der Symbolleiste mithilfe der
setTitle
Methodequelle
Versuche dies:
XML-Code
Java Code
quelle
Wenn Sie eine statische Zeichenfolge in der Symbolleiste festlegen möchten, ist es am einfachsten, die Aktivitätsbezeichnung in AndroidManifest.xml festzulegen:
Die Symbolleiste erhält diese Zeichenfolge ohne Code. (funktioniert für mich mit v27-Bibliotheken.)
quelle
Ich habe ein seltsames Verhalten, das Ihnen helfen kann.
Dies funktioniert, hat jedoch keine Auswirkungen nur auf onCreate:
Versuchen Sie dies in onCreate zu verwenden:
quelle
So ändern Sie den Titel für jede Aktivität
quelle
quelle
Obwohl dies für dieses spezielle Setup nicht sofort relevant ist, stellte ich fest, dass das Entfernen von "CollapsingToolbarLayout" aus meinem XML, das meine Symbolleiste in ein AppBarLayout einwickelte, alles funktionierte.
Also das:
An Stelle von:
Dann setze ich den Titel in onCreate der Aktivität, bevor setSupportActionBar () aufgerufen wird.
quelle
Dies kann durch Festlegen des
android:label
Attributs Ihrer Aktivität in derAndroidManifest.xml
Datei erfolgen:Fügen Sie diese Zeile dann zu onCreate () hinzu:
quelle
Stellen Sie sicher, dass Sie diese Option hinzufügen:
quelle
Die Antwort finden Sie in der Dokumentation (die Sie hier finden ):
Das ist die Lösung, die Sie tatsächlich gefunden haben. Ich dachte nur daran, einen Verweis auf die offizielle Dokumentation zu geben (die anscheinend nur wenige lesen).
quelle
In Kotlin können Sie dies tun:
quelle
Dies geschieht, weil Sie sowohl die Symbolleiste als auch die Aktionsleiste verwenden. Da Sie die Symbolleiste jetzt als Aktionsleiste verwenden möchten, müssen Sie zunächst die vom Dekor bereitgestellte Aktionsleiste deaktivieren.
Am einfachsten ist es, wenn Sie Ihr Thema erweitern
Theme.AppCompat.NoActionBar
.quelle