Estoy tratando de conseguir el cajón de navegación para abrir por debajo de la barra de herramientas.

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout"
tools:context=".MainActivity">
<RelativeLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content">
<include layout="@layout/toolbar"
android:id="@+id/toolbar"/>
<FrameLayout
android:layout_below="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color"/>
</RelativeLayout>
<ListView
android:id="@+id/drawer"
android:layout_width="260dp"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar"
android:layout_marginTop="56dp"
android:layout_gravity="start">
</ListView>
</android.support.v4.widget.DrawerLayout>

¿Cómo puedo volver a formatear el xml de forma que la barra de navegación se abre por debajo de la barra de herramientas?

si usted mira la última versión de la Google Play store. La navegación cajón de debajo de la barra de herramientas. Me gustaría implementar algo similar a eso.
¿Cómo puedo manejar la barra de herramientas de acciones cuando la barra de navegación está abierto
no, si usted tiene acciones que usted desea que el usuario debe hacer cuando el cajón está abierto, entonces debería poner en los cajones de diseño
Posibles duplicados de ¿Cómo puedo hacer DrawerLayout a la pantalla debajo de la Barra de herramientas?
Compruebe esto hacia fuera gadgetsaint.com/android/android-navigation-drawer-toolbar/…

OriginalEl autor safaiyeh | 2014-11-18

7 Comentarios

  1. 109

    Debe mover DrawerLayout como la parte superior de los padres y mover Toolbar de DrawerLayout contenedor de contenido.
    En este corto se parece a:

    RelativeLayout
    ----Toolbar
    ----DrawerLayout
    ---ContentView
    ---DrawerList 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/top_parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">
    <include
    android:id="@+id/toolbar"
    layout="@layout/toolbar" />
    <android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/toolbar">
    <FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background_color" />
    <ListView
    android:id="@+id/drawer"
    android:layout_width="260dp"
    android:layout_height="match_parent"
    android:layout_below="@+id/toolbar"
    android:layout_gravity="start"
    android:layout_marginTop="56dp" />
    </android.support.v4.widget.DrawerLayout>
    </RelativeLayout>

    Sin embargo, el Material de pautas de Diseño de estado que la Navegación Cajón debe estar por encima de la Toolbar.

    Esto me permitirá manejar la barra de herramientas acciones, incluso cuando el cajón está abierto?
    Sí. Debido a que el cajón sólo responderá a los eventos a los Rect es limitado.
    thats cool stuff!!
    fitsystemwindows para establecer las verdaderas causas de ese problema. Resuelve todos modos.
    Excelente respuesta Nikola! sólo un mejora poco. Para el ListView uso android:layout_marginTop="?attr/actionBarSize" y en la barra de herramientas establecer el mismo valor de altura.

    OriginalEl autor Nikola Despotoski

  2. 22

    Simplemente debe añadir

    android:layout_marginTop="@dimen/abc_action_bar_default_height_material"

    a su diseño que usted está usando como cajón.

    Esto ajustará automáticamente la navegación cajón de debajo de la barra de herramientas y también es compatible con diferentes tamaños de pantalla.

    Por desgracia, @dimen/abc_action_bar_default_height_material está marcado como privado en la biblioteca de compatibilidad, por lo que esta solución es apta para el uso como el nombre de recurso puede desaparecer en un futuro de liberación de la biblioteca.
    Todavía crea una sombra en la barra de herramientas cuando se desliza hacia fuera. Eso no es un efecto deseado. No es la mejor manera de hacerlo.

    OriginalEl autor Muhammad Qasim

  3. 20

    Puede agregar layout_marginTop como este,

    <android.support.design.widget.NavigationView
    android:layout_marginTop="@dimen/abc_action_bar_default_height_material"
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

    pero cajón aparecerá como la capa superior de la barra de herramientas.


    Aquí es otro Entrecortado forma para agregar a continuación de la barra de herramientas!!!

    podría no ser el mejor, pero funciona!

    resultado final se verá así

    Navegación Cajón De Debajo De La Barra De Herramientas

    Si crea un proyecto como un Cajón de Navegación del proyecto(Navigation Drawer Activity) se le dará cuatro archivos XML en la creación, en su layout carpeta

    • app_bar_main
    • content_main
    • navigatin_main
    • activity_main

      Navegación Cajón De Debajo De La Barra De Herramientas

    cómo estos xmls están vinculados? principalmente veo include tag se utiliza

    Su Actividad está relacionada con la activity_main

    • activity_main tiene la app_bar_main y navigation_view(cajón)
    • app_bar_main tiene la toolbar y content_main por defecto

    ahora vamos a eliminar activity_main y establecer su contenido directamente a la barra de la aplicación principal y utilizar como plano principal de la Actividad.

    Para agregar el cajón debajo de la barra de herramientas
    agregar, bajo el android.support.design.widget.AppBarLayout porque contiene la barra de herramientas y la de su debe ser en la parte superior.

    aquí es un ejemplo de app_bar_main.XML

          <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="none.navhead.MainActivity">
    <android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">
    <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay" />
    </android.support.design.widget.AppBarLayout>
    //------ taken from activity_main
    //content main
    <include layout="@layout/content_main" />
    //you need this padding
    <android.support.v4.widget.DrawerLayout
    android:paddingTop="?attr/actionBarSize"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:openDrawer="start">
    <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:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />
    </android.support.v4.widget.DrawerLayout>
    </android.support.design.widget.CoordinatorLayout>

    p.s puede establecer app_bar_main.XML a setContentView de su actividad
    jugar a la vuelta hay un montón de maneras 😉

    Este a mi me funciona también en API23, donde la vista denavegación está diseñado para ser dibujado detrás de la barra de estado del sistema. Sin embargo, todavía tenía la sombra dibujada en la parte superior, como si todavía estaba dibujado detrás de la barra de estado, así que tuve que agregar app:insetForeground=”@” null ” a la vista denavegación, y se dibuja correctamente debajo de la barra de acción (o de la Barra de herramientas). De esta manera también el animado para la flecha en la parte superior izquierda es visible, no cubiertos por la vista denavegación.
    También tengo que añadir android:layout_marginTop="?attr/actionBarSize" a DrawerLayout, para hacer de los contenidos y la navegación visible correctamente.
    cuando yo uso esto, entonces los datos en el fragmento no se puede hacer clic. plz decir cómo resolver
    posakya donde hizo colocar su fragmento?
    gracias a la respuesta , pero voy a resolver este problema utilizando manera diferente..

    OriginalEl autor Charuක

  4. 6

    esta es mi configuración y el trabajo perfecto:
    activity_main:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- AppBarLayout should be here -->
    <android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">
    <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay" />
    </android.support.design.widget.AppBarLayout>
    <!-- add app:layout_behavior="@string/appbar_scrolling_view_behavior" -->
    <android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    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:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />
    </android.support.v4.widget.DrawerLayout>
    </android.support.design.widget.CoordinatorLayout>

    app_bar_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout
    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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".activty.MainActivity">
    <include layout="@layout/content_main"/>
    </FrameLayout>

    resultado:
    Debajo de la barra de herramientas

    Navegación Cajón De Debajo De La Barra De Herramientas

    Este uno trabaja para ponerla debajo de un colapso de la barra de herramientas con un desplome de la imagen. Se queda debajo de la imagen.

    OriginalEl autor smaznet

  5. 3
    <?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:layout_marginTop="?attr/actionBarSize"
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="false"
    app:menu="@menu/activity_main_drawer" />
    </android.support.v4.widget.DrawerLayout>
    android:fitsSystemWindows=”false”

    OriginalEl autor Tarun Umath

  6. 2

    Si usted está utilizando la barra de herramientas personalizada, a continuación, utilizar el cajón de diseño en este camino..

    <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"
    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" />
    <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">
    ....
    </LinearLayout>
    </android.support.v4.widget.DrawerLayout>
    </LinearLayout>

    y si usted no está utilizando la barra de herramientas personalizada, a continuación, usted tiene que fijar el margen superior del cajón de diseño..

    android:layout_marginTop ="?android:attr/actionBarSize"

    OriginalEl autor Avijit Karmakar

  7. 0

    Una Fácil y Buena solución es establecer fitsSystemWindows=false para

    android.support.v4.widget.DrawerLayout

    que tiene un id como

    android:id="@+id/drawer_layout"

    Y para navigationView conjunto layout_marginTop como ?attr/actionBarSize que obtendría el actionbar tamaño y la establece como margen

    Aquí es el código completo de activity_main.xml que tiene tanto de los cambios mencionados anteriormente.

    OriginalEl autor Inzimam Tariq IT

Dejar respuesta

Please enter your comment!
Please enter your name here