Ich migriere in meiner Anwendung von ActionBar
nach Toolbar
. Aber ich weiß nicht, wie ich das Klickereignis auf dem Pfeil nach hinten anzeigen und aktivieren soll, Toolbar
wie ich es getan habe Actionbar
.
Mit ActionBar
rufe ich an mActionbar.setDisplayHomeAsUpEnabled(true)
. Aber es gibt keine ähnliche Methode wie diese.
Hat sich jemals jemand dieser Situation gestellt und irgendwie einen Weg gefunden, sie zu lösen?
Antworten:
Wenn Sie ein verwenden
ActionBarActivity
, können Sie Android anweisen, dasToolbar
wie folgt zu verwendenActionBar
:Und ruft dann an
wird funktionieren. Sie können dies auch in Fragmenten verwenden, die an
ActionBarActivities
Sie angehängt sind. Sie können es folgendermaßen verwenden:Wenn Sie nicht verwenden
ActionBarActivities
oder wenn Sie den Zurückpfeil auf einemToolbar
nicht als Ihr eingestellten Pfeil erhalten möchten,SupportActionBar
können Sie Folgendes verwenden:Wenn Sie verwenden
android.support.v7.widget.Toolbar
, sollten Sie Ihrem Code den folgenden Code hinzufügenAppCompatActivity
:quelle
R.drawable.abc_ic_ab_back_mtrl_am_alpha
wederR.drawable.ic_action_back
.toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Ich sehe viele Antworten, aber hier ist meine, die vorher nicht erwähnt wurde. Es funktioniert ab API 8+.
quelle
onOptionItemSelected()
Damit ist das abgeschlossen, was MrEngineer13 in seiner Antwort nicht behandelt hat.Es gibt viele Möglichkeiten, dies zu erreichen. Hier ist mein Favorit:
Layout:
Aktivität:
quelle
setNavigationOnClickListener()
, können Siecase android.R.id.home:
in 'onOptionsItemSelected ()' hinzufügen.case android.R.id.home
hat bei mir nicht funktioniert. Nach einer Weile der Suche hat Ihre Antwort den Trick getan. Danke.Sie können die setNavigationIcon-Methode der Symbolleiste verwenden. Android Doc
quelle
setNavigationOnClickListener()
in API Level 21 und höher hinzugefügt wurdeWenn Sie keine benutzerdefinierte Datei erstellen möchten
Toolbar
, können Sie dies tunIn Ihnen
AndroidManifest.xml
Sie können dies auch
android:theme="@style/Theme.AppCompat.Light"
als<aplication>
Tag setzen, um es auf alle Aktivitäten anzuwendenquelle
if (item.getItemId() == android.R.id.home)
Und für API 21+
android:navigationIcon
quelle
Ich habe diese Methode aus der Google Developer-Dokumentation verwendet :
Wenn Sie eine Nullzeigerausnahme erhalten, kann dies vom Thema abhängen. Versuchen Sie es mit einem anderen Thema im Manifest oder verwenden Sie dieses alternativ:
Dann im Manifest, wo ich die übergeordnete Aktivität für die aktuelle Aktivität festlege:
Ich hoffe, dies wird dir helfen!
quelle
getSupportActionBar()
funktioniert. Vielen Dank!Wenn Sie es verwendet
AppCompatActivity
haben und den Weg gegangen sind, es nicht zu verwenden, weil Sie nicht die Automatik erhaltenActionBar
möchten, die es bietet, weil Sie dasToolbar
aufgrund Ihrer Materialdesign-Anforderungen trennen möchten, undCoordinatorLayout
oderAppBarLayout
dann Folgendes berücksichtigen:Sie können das weiterhin verwenden
AppCompatActivity
, Sie müssen es nicht beenden, nur damit Sie ein<android.support.v7.widget.Toolbar>
in Ihrer XML verwenden können. Schalten Sie einfach den Stil der Aktionsleiste wie folgt aus:Leiten Sie zunächst einen Stil aus einem der NoActionBar-Themen ab, die Sie in Ihrem Thema mögen
styles.xml
. Ich habe esTheme.AppCompat.Light.NoActionBar
so verwendet:Wählen Sie im Manifest Ihrer App das soeben definierte untergeordnete Thema aus:
Wenn in Ihrer Aktivitäts-XML die Symbolleiste wie folgt definiert ist:
Dann, und dies der wichtigste Teil ist, Sie setzen die Unterstützung Aktionsleiste auf die AppCompatActivity , dass Sie erstreckt, so dass die Symbolleiste in Ihrem xml, wird die Bar Aktion. Ich bin der Meinung, dass dies ein besserer Weg ist, da Sie einfach die vielen Dinge tun können, die ActionBar zulässt, wie Menüs, automatische Aktivitätstitel, Handhabung der Elementauswahl usw., ohne benutzerdefinierte Klick-Handler usw. hinzufügen zu müssen.
Gehen Sie in der onCreate-Überschreibung Ihrer Aktivität wie folgt vor:
quelle
quelle
Einfache und einfache Möglichkeit, die Schaltfläche "Zurück" in der Symbolleiste anzuzeigen
Fügen Sie diesen Code in die onCreate-Methode ein
Fügen Sie diese Überschreibungsmethode außerhalb der onCreate-Methode ein
quelle
In Kotlin wäre es
quelle
Leicht können Sie es tun.
Credits: https://freakycoder.com/android-notes-24-how-to-add-back-button-at-toolbar-941e6577418e
quelle
In der können Sie
AppCompatActivity
zum Beispiel tunquelle
In Ihrer Manifestdatei für die Aktivität, bei der Sie eine Zurück-Schaltfläche hinzufügen möchten, verwenden wir die Eigenschaft android: parentActivityName
PS Dieses Attribut wurde in API Level 16 eingeführt.
quelle
Das hat perfekt funktioniert
quelle
Zuerst müssen Sie die Symbolleiste initialisieren:
Rufen Sie dann die Zurück-Taste in der Aktionsleiste auf:
quelle
Wenn Sie den Zurückpfeil auf einer Symbolleiste erhalten möchten, die nicht als SupportActionBar festgelegt ist:
(Kotlin)
um res von Attributen zu erhalten:
quelle
Fügen Sie dies der XML-Datei der Aktivität im Layoutordner hinzu:
Machen Sie die Symbolleiste anklickbar und fügen Sie diese der onCreate-Methode hinzu:
quelle
Möglicherweise eine zuverlässigere Methode, um das Up-Symbol aus Ihrem Thema abzurufen (wenn Sie die Symbolleiste nicht als Aktionsleiste verwenden):
Um das Themenattribut in ein Zeichenobjekt umzuwandeln, habe ich eine Erweiterungsfunktion verwendet:
quelle
Wenn Sie DrawerLayout mit ActionBarDrawerToggle verwenden , müssen Sie diesen Code in Ihre Aktivität einfügen , um die Schaltfläche Zurück anstelle der Schaltfläche Menü (und umgekehrt) anzuzeigen:
Wenn Sie also die Schaltfläche Zurück anstelle der Schaltfläche Menü anzeigen müssen , rufen Sie showBackInToolbar (true) auf . Wenn Sie die Schaltfläche Menu benötigen , rufen Sie showBackInToolbar (false) auf .
Sie können generieren zurück Pfeil (ic_arrow_back_white_32dp) hier , Suche arrow_back in Clipart Abschnitt (Standard verwenden 32DP mit 8DP padding). Wählen Sie einfach die gewünschte Farbe.
quelle
Sie können jederzeit ein
Relative layout
oder einLinear Layout
in IhrToolbar
Symbol einfügen und eine Bildansicht für das Zurück-Symbol oder ein Schließsymbol an einer beliebigen Stelle in der Symbolleiste platzierenZum Beispiel habe ich das relative Layout in meiner Symbolleiste verwendet
Und es sieht so aus:
Sie können in dieser Bildansicht einen Klick-Listener aus Aktivität oder Fragment wie diesem hinzufügen.
quelle
Mit Kotlin wurde es:
Xml:
In Ihrer Aktivität: -
quelle
Wenn Sie JetPack Navigation verwenden.
Hier ist das Layout für MainActivity
Richten Sie Ihre Symbolleiste in Ihrer Aktivität wie unten in onCreate () Ihrer Aktivitätsklasse ein.
setupActionBarWithNavController (navController) Erstellt bei Bedarf eine Zurück-Schaltfläche in der ToolBar und übernimmt die BackButton-Funktionalität. Wenn Sie eine CustomBack-Funktionalität schreiben müssen, erstellen Sie ein callBack wie unten beschrieben für Ihre fragment onCreate () -Methode
Aus der Dokumentation: https://developer.android.com/guide/navigation/navigation-custom-back
quelle
Wenn Sie das verwenden, verwenden Sie
androidx.appcompat.app.AppCompatActivity
einfach:Dann definieren Sie einfach in
Manifest.xml
der übergeordneten Aktivität.Wenn Sie stattdessen ein verwenden
Toolbar
und ein benutzerdefiniertes Verhalten wünschen, verwenden Sie einfach:und in Ihrer Aktivität:
quelle