Android-Design-Bibliothek CoordinatorLayout, AppBarLayout und DrawerLayout

Ich benutze die Android-Design-Bibliothek auf API 22. Ich möchte:

  1. Haben eine Toolbar und eine DrawerLayout, in der sich ein RecyclerView befindet
  2. Habe die DrawerLayout unter der Toolbar; Zum Beispiel, wenn die Symbolleiste sichtbar ist, sollte der Hauptinhalt der Schublade darunter liegen, und die (linke) Schublade sollte auch darunter liegen, so dass die Werkzeugleiste bei der Erweiterung noch sichtbar ist
  3. Wenn die Recycler-Ansicht nach unten gescrollt wird, wird die Symbolleiste aus dem Bildschirm gescrollt

Ist das überhaupt möglich? Ich habe Probleme zu heiraten # 2 und # 3. So ist es jetzt, dass die Symbolleiste immer über dem Schubladenlayout liegt und den ersten Einstieg in den Recycler abdeckt und auch die Oberseite der linken Schublade. Hier ist meine Layout-Datei (unvollständig, aber zeigt meine Struktur):

  • So starten Sie Genymotion Gerät mit Shell-Befehl?
  • Skalieren Sie das Bild, um die ImageView-Breite zu füllen und das Seitenverhältnis zu behalten
  • Wie Software Based Card Emulation (HCE) garantiert NFC Security?
  • Wie man den Bildschirm bei der Teilweckschleuse einschaltet
  • ListView in einem ScrollView
  • Problem beim Starten von Android AVM / SDK gui mit den Tools / Android ausführbare in der Android SDK. Ubuntu 10.04, i686
  • <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> 

    Es sieht aus wie wenn die RecyclerView App: layout_behavior = "@ string / appbar_scrolling_view_behavior" Einstellung hat keine Wirkung, denn wenn gelöscht, ist das Verhalten das gleiche.

    Ich habe versucht, eine RelativeLayout als Kind des CoordinatorLayout zu definieren, um festzustellen, dass die Schublade unter der Symbolleiste ist. Aber nichts scheint zu funktionieren.

    Ist das, was ich versuche, mit der Bibliothek zu erreichen?

  • Wie kann ich Android Studio IDE ohne das SDK herunterladen?
  • Wie ändere ich die Statusleiste, um app in Lollipop zu entsprechen?
  • Ist es möglich, Mozilla Persona (BrowserID) mit mobilen Apps zu benutzen?
  • Umgang mit einer großen Datenbank in Android
  • Zeigen Sie das letzte Element in ListiView an, wenn Sie auf Text bearbeiten klicken
  • Android-Start-Anwendung Detail-Seite
  • 5 Solutions collect form web for “Android-Design-Bibliothek CoordinatorLayout, AppBarLayout und DrawerLayout”

    Versuchen Sie Folgendes, wenn Sie die Animation des Hamburger-Symbols und des Pfeils sehen möchten. Wenn du den oberen Rand (layout_marginTop) für NavigationView einschließst, verschiebst du ihn nach unten.

     <?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" android:id="@+id/navigation_drawer" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways" /> </android.support.design.widget.AppBarLayout> <!-- main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/background_light" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> <!-- The navigation drawer --> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="?attr/actionBarSize" android:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/drawer_menu"/> </android.support.v4.widget.DrawerLayout> 

    Ja! Es ist möglich.

     <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/drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.CoordinatorLayout android:id="@+id/coordinatorLayout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".StartupActivity"> <android.support.design.widget.AppBarLayout android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways" app:theme="@style/Theme.AppCompat.NoActionBar"/> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/scrollRecyclerView" android:layout_width="match_parent" android:layout_height="fill_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> <android.support.v7.widget.RecyclerView android:id="@+id/drawer_recycler_view" android:layout_width="320dp" android:layout_height="match_parent" android:layout_gravity="left|start" android:background="@color/WhiteColor" android:fitsSystemWindows="true" android:scrollbars="vertical"/> </android.support.v4.widget.DrawerLayout> 

    Wie Sie sehen können, ist es wichtig, dass Sie app:layout_scrollFlags="scroll|enterAlways" für Ihre Symbolleiste zum app:layout_scrollFlags="scroll|enterAlways" , wenn Sie scrollen. Die RecyclerView am unteren Rand des Codes ist die eine in der DrawerLayout , die oben ist die in Ihrem Haupt-Aktivitäts-Layout.

    Von der Entwickler-Seite :

    DrawerLayout fungiert als Top-Level- Container für Fensterinhalte, mit denen interaktive "Schubladen" -Ansichten aus dem Rand des Fensters herausgezogen werden können.

    Versuchen Sie zunächst, die DrawerLayout als Top-Level-Container (dh übergeordnetes Layout) zu platzieren. Dann legen Sie die CoordinatorLayout unten und sehen, was passiert.

    Außerdem hast du die NavigationView nicht hinzugefügt. Bitte überprüfen Sie hier die grundlegenden Anweisungen.

    Versuchen Sie, dass es funktionieren sollte, für mich gearbeitet.

      <android.support.design.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" /> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" > <android.support.v7.widget.RecyclerView android:id="@+id/scrollingRecyclerView" android:layout_width="match_parent" android:layout_height="fill_parent" /> <!-- The navigation drawer --> <FrameLayout android:id="@+id/right_frame" android:layout_height="match_parent" android:layout_gravity="start"/> (whatever) </android.support.v4.widget.DrawerLayout> </android.support.design.widget.CoordinatorLayout> 

    Das Scrollverhalten muss auf das direkte Kind von CoordinatorLayout (auf DrawerLayout) gesetzt sein. Dies sollte Ihre # 2 , # 3 Probleme beheben. Und falls Ihr Schubladeninhalt recyclerView enthält, wird die Toolbar wieder aus dem Bildschirm gescrollt.

    Es ist schon lange her, aber ich glaube, es hilft immer noch jemandem. Schubladen-Layout muss ein Kind Layout haben. Laut android docs muss es FrameLayout sein, da die XML-Bestellung z-ordering impliziert und die Schublade muss oben auf den Inhalt sein. Besuchen Sie unten Link.

    Erstellen einer Navigationsschublade

    Fügen Sie Ihre AppBarLayout, Toolbar, RecyclerView und alle anderen Ansichten in FrameLayout und machen es ein Kind von Drawer Layout. Hoffentlich läuft es.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.