Comment faire pour que la disposition du tiroir soit en dessous de la barre d’action/barre d’outils? J'utilise la bibliothèque d'applications v7: 21 avec la nouvelle vue ToolBar.
Les exemples que je vois ressemblent
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/my_drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- drawer view -->
<LinearLayout
Android:layout_width="304dp"
Android:layout_height="match_parent"
Android:layout_gravity="left|start">
<!-- drawer content -->
</LinearLayout>
<!-- normal content view -->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<!-- The toolbar -->
<Android.support.v7.widget.Toolbar
Android:id="@+id/my_awesome_toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:minHeight="?attr/actionBarSize"
Android:background="?attr/colorPrimary" />
<!-- The rest of content view -->
</LinearLayout>
Mais la barre d’outils sera cachée par le tiroir, ce qui rendra inutile l’icône d’une hamburger animée (comme v7.ActionBarDrawerToggle), car elle ne sera pas visible sous le tiroir, mais je souhaite utiliser la nouvelle vue ToolBar pour mieux prendre en charge le thème Matériau.
Alors, comment y arriver? Est-il possible d'avoir DrawerLayout en tant que vue non supérieure?
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- The toolbar -->
<Android.support.v7.widget.Toolbar
Android:id="@+id/my_awesome_toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:minHeight="?attr/actionBarSize"
Android:background="?attr/colorPrimary" />
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/my_drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- drawer view -->
<LinearLayout
Android:layout_width="304dp"
Android:layout_height="match_parent"
Android:layout_gravity="left|start">
<!-- drawer content -->
</LinearLayout>
<!-- normal content view -->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<!-- The rest of content view -->
</LinearLayout>
</Android.support.v4.widget.DrawerLayout>
</LinearLayout>
je ne pense pas que vous puissiez le faire lorsque vous utilisez custom toolbar
mais un contournement consisterait à définir un top_margin
sur tiroir .
<!-- drawer view -->
<LinearLayout
Android:layout_marginTop="?attr/actionBarSize"
...
si vous avez trouvé une meilleure solution, dites-moi aussi;)
Ma solution: générer un modèle avec Android Studio 2.1.2, un modèle de tiroir:
Seulement trois modifications sont nécessaires: définir la marge supérieure dans la vue NavigationView
et supprimer la barre de statut de recouvrement dans style.xml
<item name="Android:windowDrawsSystemBarBackgrounds">false</item>
Android:fitsSystemWindows="false"
layout main.xml set margin top obtenir la valeur size de la barre d'action Android:layout_marginTop="?attr/actionBarSize"
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="false"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
<Android.support.design.widget.NavigationView
Android:id="@+id/nav_view"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="start"
Android:layout_marginTop="?attr/actionBarSize"
Android:fitsSystemWindows="false"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</Android.support.v4.widget.DrawerLayout>
Changez le style de votre tiroir comme ci-dessous
RelativeLayout
----Toolbar
----DrawerLayout
---ContentView
---DrawerList
J'ai trouvé une solution plus simple: Définir les attributs DrawerLayout et NavigationView:
Android:fitsSystemWindows="false"
puis donnez marginTop à la vue de navigation comme
"?actionBarSize"
peut-être que votre fond de barre de statut deviendra transparent dans ce cas dans styles.xml, ajoutez
<item name="Android:statusBarColor">@color/colorPrimaryDark</item>
attribuer à récupérer la couleur normale ou toute autre couleur que vous voulez ...