Schaltfläche "Schließen" in der Symbolleiste anstelle von "Zurück"


81

Ich habe in Googles Posteingangs-App gesehen, dass beim Erstellen einer neuen E-Mail in der Symbolleiste anstelle der Schaltfläche "Zurück" (Pfeil) eine Schaltfläche "Schließen" angezeigt wird (siehe Bild).

Wie kann ich das erreichen?

Schaltfläche zum Schließen des Posteingangs

Antworten:


108

Verwenden  

this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);

 

um das zu erreichen.

Sie können Ihr eigenes Schließsymbol erstellen oder das auf GitHub festgelegte Symbol für das Materialdesign verwenden . Fügen Sie diese Zeile auch vor der obigen Zeile hinzu, damit die Schließfunktion als Rückpfeil fungiert.

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Es funktioniert nicht. Der Zurückpfeil wird nicht durch das neue Symbol ersetzt. Beide werden angezeigt. Außerdem erhält das Symbol bei dieser Lösung nicht die Eigenschaft "colorPrimaryDark".
Marta Rodriguez

Es funktioniert, ist aber nicht genau das, was ich wollte. Ich hatte erwartet, mit "colorPrimaryDark" wie das Back-Symbol zu arbeiten. Es scheint jedoch, dass das Symbol "Schließen" nicht Teil des SDK ist. Danke @AlokNair!
Marta Rodriguez

1
Funktioniert einwandfrei, wenn ActionBarActivity verwendet wird und PARENT im Manifest angegeben ist. +1 für die Antwort. Danke Kumpel!
PsyGik

7
Ich stellte fest, dass ich setDisplayHomeAsUpEnabled vor SetHomeAsUpIndicator aufrufen musste, da sonst das Symbol nicht ersetzt würde.
CodeChimp

1
und wie kann man zum Original zurückkehren?
Michel Feinstein

22

Sie müssen ein übergeordnetes Element im Manifest definieren und dann onSupportNavigationUp () überschreiben, wenn Sie natürlich die Support-App-Leiste verwenden. Auf dieser praktischen Website finden Sie auch die Symbolpakete: https://www.google.com/design/icons/

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.yourAwesomeLayout);

    setupToolBar();    
}

private void setupToolBar() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    if (toolbar == null) return;

    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
}

@Override
public boolean onSupportNavigateUp() {
    finish(); // close this activity as oppose to navigating up

    return false;
}

Geben Sie hier die Bildbeschreibung ein


3
Aus welchem ​​Grund sind Sie falsch zurückgekehrt onSupportNavigateUp()? Die Dokumentation sagt, es ist nur eine Erfolgsflagge
brainmurphy1

7

Entschuldige die späte Antwort. Ich habe die einfachste Lösung für Sie gefunden . hier funktioniert vor allem die antwort bei mir nicht ( because i want to use toolbar not actionBar due to theming). Versuchen Sie also, die Schaltfläche zum Schließen über das XML-Layout hinzuzufügen. und es funktioniert.

Hier ist eine XML-Syntax zum Hinzufügen der Schaltfläche zum Schließen zur Symbolleiste (Version 7).

app:navigationIcon="@drawable/ic_close_black_24dp"

ans hier ist ein ausgegebenes Bild Ausgabebild


Woher kommt @drawable/ic_close_black_24dpdas?
CACuzcatlan

@CACuzcatlan Das ist nur ein zufälliges Bild, das er im Ordner seines Zeichens hat. Sie können ein beliebiges Symbol auswählen.
Mikkel Larsen

@CACuzcatlan finden Sie in Android Studio Vektor-Assets.
Sourav Bagchi

5
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Search");
toolbar.setNavigationIcon(R.drawable.abc_ic_clear_mtrl_alpha);
setSupportActionBar(toolbar);

3

Eine Alternative zum Definieren der übergeordneten Aktivität im Manifest besteht darin, die in der onOptionsItemSelected-Methode auszuführende Aktion wie in diesem Beispiel zu behandeln:

 @Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
        // Respond to the action bar's Up/Home/back button
        case android.R.id.home:
            finish();
            break;
    }
    return super.onOptionsItemSelected(item);
}

-5

Sie können einen Stil definieren:

<style name="Theme.Toolbar.Clear">
    <item name="toolbarNavigationIcon">@drawable/abc_ic_clear_mtrl_alpha</item>
</style>

und verwenden Sie es in Ihrem Thema:

<style name="Theme.Clear">
    <item name="toolbarTheme">@style/Theme.Toolbar.Clear</item>
</style>
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.