Bibliothèque de design Android CoordinatorLayout, AppBarLayout et DrawerLayout
Je suis en utilisant le modèle Android bibliothèque API 22. Je voudrais:
- avoir une Barre d'outils et un DrawerLayout à l'intérieur de laquelle il y a un RecyclerView
- ont la DrawerLayout être en dessous de la Barre d'outils; par exemple, lorsque la barre d'outils est visible, le tiroir principal contenu doit être en dessous d'elle, et l' (à gauche) tiroir devrait également être en dessous de sorte que, lorsqu'il est étendu, la barre d'outils est toujours visible
- ont de la Barre d'outils pour faire défiler l'écran quand le recycleur vue défile vers le bas
Est-ce même possible? J'ai des problèmes pour se marier #2 et #3. La façon dont il est maintenant, c'est que la barre d'outils est toujours au-dessus du tiroir de mise en page, couvrant la première entrée dans le recycleur, et le haut du tiroir gauche. Voici mon fichier de mise en page (incomplète, mais en montrant ma structure):
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"/>
</android.support.v4.widget.DrawerLayout>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Toolbar
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
On dirait bien que le RecyclerView app:layout_behavior="@string/appbar_scrolling_view_behavior" réglage n'a aucun effet, parce que quand il est supprimé, le comportement est le même.
J'ai essayé d'ajouter un RelativeLayout comme un enfant de la CoordinatorLayout de définir que le tiroir est en dessous de la barre d'outils etc. mais rien ne semble fonctionner.
Est ce que je suis en train de réaliser possible avec la bibliothèque?
source d'informationauteur wujek
Vous devez vous connecter pour publier un commentaire.
Essayez les solutions suivantes si vous voulez voir l'animation du hamburger icône et la flèche. Si vous incluez la marge du haut (layout_marginTop) pour la fenêtre des éléments, il va se déplacer vers le bas.
Oui! Il est possible.
Comme vous pouvez le voir, ce qui compte c'est essentiellement que vous définissez
app:layout_scrollFlags="scroll|enterAlways"
de votre barre d'outils pour masquer lorsque vous faites défiler. LeRecyclerView
au bas de la code est celui à l'intérieur de laDrawerLayout
l'un au-dessus est le seul dans votre activité principale disposition.De la les développeurs de page:
Au premier abord, essayez de placer le DrawerLayout comme un conteneur de niveau supérieur (c'est à dire parent de mise en page). Ensuite, placez la CoordinatorLayout ci-dessous et voir ce qui se passe.
De Plus, vous n'avez pas ajouté le la fenêtre des éléments. Veuillez vérifier les fondamentaux instructions ici.
Essayez cela, il doit travailler, a travaillé pour moi.
Le comportement de défilement doit être définie à l'enfant direct de CoordinatorLayout (à DrawerLayout). Cela devrait résoudre votre #2#3 problèmes. Et dans le cas où votre tiroir de contenu contient recyclerView Barre d'outils sera de nouveau défilé hors de l'écran.
Sa fait un long moment maintenant, mais je crois que ça aide toujours quelqu'un.
Tiroir de Mise en page doit avoir un enfant de mise en page. Selon android docs il doit être FrameLayout parce que le XML commande implique z de la commande et le tiroir doit être sur le dessus du contenu. Visitez le lien ci-dessous.
La création d'un Tiroir de Navigation
Ajouter votre AppBarLayout, Barre d'outils, RecyclerView et tous les autres points de vue dans FrameLayout et d'en faire un enfant de Tiroir de Mise en page. J'espère qu'il va exécuter.