Secondo the Material Design specs la larghezza del Nav cassetto su dispositivi mobili deve essereMaterial Design: Nav cassetto Larghezza
lato width nav = larghezza dello schermo - applicazione altezza della barra
Come facciamo a implementare questo su Android ?
Ho due soluzioni parziali. Il primo è il modo hacky: nell'attività contenente metto questo codice:
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB_MR1) { final Display display = getWindowManager().getDefaultDisplay(); final Point size = new Point(); display.getSize(size); final ViewGroup.LayoutParams params = mDrawerFragment.getView().getLayoutParams(); params.width = size.x - getResources().getDimensionPixelSize( R.dimen.abc_action_bar_default_height_material ); mFragmentUserList.getView().setLayoutParams(params); }
Questo, tuttavia, provoca un secondo ciclo di layout e non funziona in gingerbread: non è ottimale.
La seconda soluzione prevede l'aggiunta di uno spazio tra il frammento e il cassettoLayout. Tuttavia, sposta l'ombra e il punto in cui l'utente può premere per tornare all'app principale. Si blocca anche quando si preme l'icona "hamburguer". Neanche ottimale.
Esiste una soluzione migliore, preferibilmente una che include stili e xml?
Questo funziona abbastanza bene per me. Penso che questa dovrebbe essere la risposta corretta, in quanto non richiede sforzi di programmazione da parte dello sviluppatore. Eppure, in grado di riempire completamente le linee guida sulla larghezza del cassetto di navigazione di Google. –
@logan: hai ragione. Ma questa era una domanda che precede l'era materiale ... – zubietaroberto
@zubietaroberto Sì, certo, lo so. Ma potrebbe ancora esserci qualcuno che ha problemi con questo tipo di problema e potrebbe trovarlo utile. – Logan