45

Çekmece yerleşimi, actionbar/araç çubuğunun altında nasıl bulunur? Yeni Araç Çubuğu görünümü ile v7: 21 uygulama uyum kütüphanesi kullanıyorum. BenAraç Çubuğunun altında görüntülemek için DrawerLayout'u nasıl yapabilirim?

<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> 

gibi görünüyor bakın Ama sonra araç çubuğu o olmayacak çünkü işe yaramaz (v7.ActionBarDrawerToggle gibi) animasyonlu bir hamburger simgesi yapar çekmecesi ile gizlenir

Örnekler çekmecenin altında görünebilir, ancak Malzeme temasını daha iyi desteklemek için yeni ToolBar görünümünü kullanmak istiyorum.

Peki bunu nasıl başarabilirsiniz? Üst düzey olmayan bir görünüm olarak DrawerLayout olması mümkün mü? itoolbar

ama bir çalışma etrafında çekmecesine bir top_margin ayarlamak olacaktır özel kullanırken olduğu sanmıyorum

+2

http://www.journaldev.com/12648/navigati onview-android – AnupamChugh

+0

Bu, http://www.gadgetsaint.com/android/android-navigation-drawer-toolbar/#.WOBABBJ97fY – ASP

+0

@AnupamChugh - yukarıda verdiğiniz bağlantıya yardımcı olabilir (** journaldev.com/12648/navigationview- android **) aslında aradığım şey. Teşekkürler!! –

cevap

93
<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> 
+4

SO'ya hoş geldiniz! Lütfen cevabınıza bir açıklama ekleyin. –

+2

Bu benim için yaptı, uygulandığında çok açık görünüyor. Araç çubuğu içeriden ziyade çekmece düzeninin üzerine yerleştirilmelidir, ancak Android Geliştiricileri'nde bulunan bir çekmecenin örnekleri, varsayılan olarak işlem çubuğunun en üstte yer alması nedeniyle kökte bulunan çekmeceye sahiptir. – NathofGod

+0

Bu benim için de çalıştı. Anlamlıdır - Araç Çubuğu şu anda hiyerarşinin bir parçası olarak kabul edildiğinden (eski Eylem Çubuğunun aksine), düzendeki gerçek yerleşim daha önemli hale gelir. –

21

. (google oyun mağaza aynı şey!)

<!-- drawer view --> 
<LinearLayout 
    android:layout_marginTop="?attr/actionBarSize" 
... 

daha iyi bir çözüm de söyle bulursa;)

+3

Çalışıyor gibi görünen bir çözüm, düzen olarak bir LineearLayout kullanarak, ToolBar ve DrawerLayout ile çocuklar arasında düzeni yeniden düzenlemek. – user1309971

+1

bu daha iyi bir çözümdür. Teşekkürler dostum – Darsh

+1

Sorunumu çöz ... Teşekkürler .. – Ironman

5

aşağıda

RelativeLayout 
----Toolbar 
----DrawerLayout 
    ---ContentView 
    ---DrawerList 
1
gibi Çekmecen düzen stilini değiştirme

Bunun işe yaramasıyla ilgili sorunlar yaşadım ve sonunda düzgün bir şekilde görüntülendim.

<LinearLayout...[add your namespaces, etc] 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:fitsSystemWindows="true"> 

    <android.support.v7.widget.Toolbar [your custom toolbar] /> 
    <android.support.v4.widget.DrawerLayout [your drawer layout] /> 
     <LinearLayout> 
      [content here] 
     </LinearLayout> 
    <android.support.design.widget.NavigationView /> 
</LinearLayout> 

bir yanlış kök etiketi altında ise, bir

"hayır layout_gravity_left"

alırsınız, etrafında tasarım widget'lar hareketli dikkatli olun: İşte kullanılan düzen olduğunu

istisna.

4

Çözümümün: Android Studio 2.1.2 ile şablon oluşturmak, çekmece şablonu:

sadece üç değişiklikleri gerekir: görünümünde NavigationView ayarlanan marj üst ve style.xml statusbar içinde overloap silmek

<item name="android:windowDrawsSystemBarBackgrounds">false</item> 

android:fitsSystemWindows="false" 

düzen main.xml seti üst kenar boşluğu boyutu İşlem Çubuğu değeri elde 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> 
+0

** false ** stil ayarı yalnızca API 21 ve üstü için çalışır. Uygulamalarımı her zaman API Seviye 17'nin tabanında kodluyorum. Bu çözüm benim için işe yaramıyor ... –

+0

Değerleri koymaya çalışın-21/styles.xml – Webserveis

+0

Bu API Seviyesinde 17 uygulamasında çalıştırdığınızda * * values-21/styles.xml ** ancak daha sonra sistem penceresinin üst kısmı artık uygulama temasını takip etmiyor, ancak uygulama için kesinlikle bir görünüm olmayan siyah bir arka plana sahip. Bu çözümü denedim ** https: //www.journaldev.com/12648/navigationview-android** ve benim için mükemmel çalışıyor. –