2014-11-27 6 views
9

Ho un semplice problema con l'inizializzazione dell'icona per la mia barra delle azioni. Sto usando Android SDK 5 e dal momento che android.support.v4.app.ActionBarDrawerToggle; è stato ritirato. Ho importato il supporto v7 e ho sostituito la mia importazione con il seguente: android.support.v7.app.ActionBarDrawerToggle; ovvero lo stesso pacchetto con v7.L'icona ActionBarDrawerToggle() non può essere impostata su ActionBar nell'SDK Android 5

Ora quando inizializzo il mio oggetto ActionBarDrawerToggle da associare al mio oggetto DrawerLayout importato da: import android.support.v4.widget.DrawerLayout; Sono costretto a rimuovere un argomento, che sembra ok (non ho idea del perché però!). ma la mia icona non entra nel mio ActionBar. qui è la mia di inizializzazione per il mio oggetto ActionBarDrawerToggle:

mActionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, 
      R.drawable.ic_drawer, R.string.drawer_open) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     @Override 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 

     } 

     /** Called when a drawer has settled in a completely open state. */ 
     @Override 
     public void onDrawerOpened(View view) { 
      super.onDrawerOpened(view); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 

     } 
    }; 

ho l'immagine nella mia risorsa e cioè R.drawable.ic_drawer

I cant sembrano trovare il motivo per cui la mia icona non appare in v7.

P.S. il codice funziona perfettamente bene, infatti quando torno alla fase di importazione v4 e aggiungo l'argomento extra per attivare l'inizializzazione dell'oggetto (dovendo scoprire con la brutta riga del corso deprecata), l'icona appare ma non nella v7.

grazie in anticipo :)

risposta

8

In realtà se si guarda a javadoc di nuovo v7.ActionBarDrawerToggle si potrebbe rendersi conto che nuova classe non fornisce il costruttore, che prende Drawable come un argomento - il 3 ° argomento in cui hai fornito il tuo Drawable è una risorsa che descrive il cassetto di apertura. Se si desidera impostare un'icona personalizzata è necessario utilizzare un altro ActionBarDrawerToggle costruttore:

ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, Toolbar toolbar, int openDrawerContentDescRes, int closeDrawerContentDescRes) 

In icona di navigazione che il caso di barra degli strumenti verrà utilizzato come l'icona di un cassetto

+2

c'è un modo per aggiungere un'icona e avere ancora l'evento di fare clic sulla barra di azione del cassetto casa ..? – DreamBigAlvin

+3

Uso Toolbar.setNavigationIcon (int resId) con l'icona personalizzata e uno sfondo selezionabile sotto di esso. Riguarda anche il metodo della barra degli strumenti setLogo (Drawable drawable) –

1

Anche se v4.ActionBarDrawerToggle è stata sconsigliata, è possibile utilizzare un altro metodo per modificare l'icona ad esempio qui sotto:

getSupportActionBar().setHomeButtonEnabled(true); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_drawer);