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

Marta Rodriguez
quelle

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);
Alok Nair
quelle
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

hat funktioniert
quelle
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

Rk215 Tech
quelle
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);
krishnan
quelle
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);
}
34m0
quelle
-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>
Fabiozo
quelle