Nach the Material Design specs die Breite des Nav Schublade auf mobilen Geräten müssenMaterial Design: Nav Schublade Breite
seinSeite nav width = Bildschirmbreite - ca. Barhöhe
Wie setzen wir diese auf Android ?
Ich habe zwei Teillösungen. Erstens ist die hacky Weise: in der Aktivität enthielten ich diesen Code setzen:
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); }
Dies verursacht jedoch einen zweiten Zyklus Layout und funktioniert nicht in Lebkuchen: es ist nicht optimal.
Die zweite Lösung beinhaltet das Hinzufügen eines Leerzeichens zwischen dem Fragment und dem drawerLayout. Es verschiebt jedoch den Schatten und die Stelle, an die der Benutzer drücken kann, um zur Haupt-App zurückzukehren. Es stürzt auch ab, wenn das "Hamburger" -Symbol gedrückt wird. Auch nicht optimal.
Gibt es eine bessere Lösung, vorzugsweise eine mit Stilen und XML?
Dies funktioniert ziemlich gut für mich. Ich denke, das sollte die richtige Antwort sein, da es keinen Programmieraufwand vom Entwickler erfordert. Es ist jedoch in der Lage, die Richtlinien für die Breite der Navigationsleiste von Google vollständig zu erfüllen. –
@logan: Sie haben Recht. Aber das war eine Frage, die älter als das materielle Alter ist ... – zubietaroberto
@zubtaroberto Ja, natürlich weiß ich das. Aber es könnte immer noch jemanden geben, der Probleme mit dieser Art von Problemen hat und das könnte nützlich sein. – Logan