2013-05-20 5 views
9

Mi chiedo se esiste un modo per utilizzare il nuovo DrawerLayout dalla libreria di supporto con ActionBarSherlock? Ho trovato soluzione alternativa per ICS + ma quello che mi serve è il supporto per Android 2.2+ Il problema è che il riferimento di conservazione dell'ABS per android.view.MenuItem originale solo quando ICS +, ma per la versione precedente c'è un'implementazione interna che non contiene riferimento per quella originale.C'è qualche modo di usare il nuovo DrawerLayout con ActionBarSharlock?

+0

Sono stato in grado di implementarlo senza alcun problema. Se hai un problema non possiamo aiutarti se non sappiamo di cosa si tratta. – Eluvatar

+0

Lo hai implementato con ActionBarSherlock? Come affronti il ​​fatto che il nuovo DrawerLayout richiede 'mDrawerToggle.onOptionsItemSelected (MenuItem)' in 'public boolean onOptionsItemSelected (MenuItem item)' quando ** MenuItem ** è di tipo 'android.view.MenuItem'? Quando estendi 'SherlockActivity' otterrai MenuItem di tipo' com.actionbarsherlock.view.MenuItem' – Androider

+0

che è diverso, non ho implementato un interruttore a cassetto. tuttavia, il Drawer funziona con ActionBarSherlock, fino a che punto non sono sicuro, mi consiglia di creare una nuova domanda con quello che hai appena chiesto. – Eluvatar

risposta

6

C'è un progetto su GitHub che funziona perfettamente

SherlockNavigationDrawer

Spero che questo aiuti

+1

Per i curiosi, ciò che questo esempio fa è fondamentalmente avvolgere la classe MenuItem sherlock con la classe MenuItem standard di Android in modo che possa essere usato il solito metodo DrawerLayout.onOptionsItemSelected(). – greg7gkb

+0

Grazie, è una soluzione semplice ma efficace! – akhyar

+0

L'icona del cassetto è supportata da tale soluzione alternativa? Alla fine ho scoperto di migrare con AppCompat per altri motivi, ma è bello sapere. – madlymad

22

Se state cercando un modo per aprire e chiudere il DrawerLayout quando tocco utente Icona dal ActionBar, è possibile utilizzare questo:

switch (item.getItemId()) { 
    case android.R.id.home: 
     if (mDrawerLayout.isDrawerOpen(mDrawerList)) { 
      mDrawerLayout.closeDrawer(mDrawerList); 
     } else { 
      mDrawerLayout.openDrawer(mDrawerList); 
     } 
     return true; 

    } 
    return true; 
} 
+1

Questo è esattamente quello che stavo cercando. Grazie @enrique –

+1

@ justin.harrison Ottimo! Buono a sapersi! –

+1

Sì, funziona. Freddo. – andude