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.