2014-12-17 41 views
16

Sto cercando di utilizzare la barra degli strumenti invece di ActionBar, ma non riesco a capire come aggiungere il pulsante su per tornare all'attività precedente. Non sono riuscito a trovare alcun metodo che potesse riguardarlo.Barra degli strumenti - aggiungi il pulsante su

Come aggiungere il pulsante Su?

risposta

23

Credo che quello che state cercando è qualcosa di simile:

Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_detail); 
setSupportActionBar(toolbar); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

o in caso di utilizzo in Frammento :

Toolbar toolbar = (Toolbar) view.findViewById(R.id.app_bar_detail); 
((ActionBarActivity) getActivity()).setSupportActionBar(toolbar); 
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Questo mostrerà la vostra barra delle azioni all'interno della barra degli strumenti, ma non preoccupatevi tutto andrà bene insieme ll. L'ultima cosa che devi fare se non vuoi alcuna ombra sotto la barra delle azioni o qualsiasi sfondo di esso è cambiare il tuo tema in vaules/styles.xml.

<style name="AppThmeme.Base" parent="Theme.AppCompat.NoActionBar"> 
1

Calling getSupportActionBar().setHomeButtonEnabled(true); dovrebbe funzionare Penso, a patto che è stato già chiamato setSupportActionBar(toolbar);

0

È possibile aggiungere il proprio pulsante 'up' nella barra degli strumenti, dopo tutto è solo un ViewGroup.

È possibile personalizzare la barra degli strumenti, per quanto si vuole, nella vostra toolbar.xml, o dovunque è stato definito android.support.v7.widget.Toolbar nel layout aggiungere il pulsante 'up' come indicato di seguito:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_height="?attr/actionBarSize" 
    android:background="@drawable/color_toolbar" 
    android:layout_width="match_parent"> 

    <ImageButton 
     android:id="@+id/upButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="uphandler" 
     android:src="@drawable/backbutton" 
     android:layout_gravity="end"/> 

</android.support.v7.widget.Toolbar> 

Ora, definire uphandler funzione nella vostra attività di ascoltare questo pulsante su:

public void uphandler(View v){ 
     this.finish(); // This will kill current activity, and if previous activity is still opened in background, it will come in front. 
} 
+0

L'uso di this.finish() è un anti-pattern, perché l'icona "su" dovrebbe portare l'utente al genitore gerarchico all'interno della tua app, non necessariamente l'ultima schermata che hanno visto: https://material.google.com /patterns/navigation.html#navigation-up-back-buttons – gsysko

3

Se si vuole fare questo in XML, è possibile utilizzare ...

<android.support.v7.widget.Toolbar 
      app:navigationIcon="?homeAsUpIndicator" 
      ... 
Problemi correlati