2015-05-17 8 views
1

Вот весь мой соответствующий код:Android панель занимает весь экран

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    toolbar.setTitle("sometitle"); 
    toolbar.inflateMenu(R.menu.menu_main); 
    setSupportActionBar(toolbar); 

Стили:

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/sunshine_blue</item> 
    <item name="colorPrimaryDark">@color/sunshine_dark_blue</item> 
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> 
    <item name="windowActionBar">false</item> <!-- Remove the default action bar --> 
    <item name="windowNoTitle">true</item> 
</style> 
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle"> 
    <item name="spinBars">true</item> 
    <item name="color">@android:color/white</item> 
</style> 

XML:

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<!-- Replace the default action bar --> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_width="match_parent" 
    android:elevation="5dp" 
    android:background="?attr/colorPrimary" /> 

<!-- The main content view --> 
<fragment 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/fragment" 
    android:name="com.***.***.***.MainActivityFragment" 
    tools:layout="@layout/fragment_main" android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<!-- The navigation drawer --> 
<ListView android:id="@+id/left_drawer" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="0dp" 
    android:background="#111"/> 

И вот результат: enter image description here

+0

Возможно, нужно указать фиксированную высоту, а не использовать 'wrap_content'? – stkent

+0

Что делать, если вы удалите minheight и maxHeight и используете определенный размер вместо wrap_content? – inmyth

+0

Но жестко кодированные размеры - плохая практика? –

ответ

11

Возможное решение - переместить панель инструментов за пределы DrawerLayout и поместить эти два в рамки рамки.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v4.widget.DrawerLayout 
     android:id="@+id/drawer_layout" 
     android:paddingTop="?attr/actionBarSize" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <!-- The main content view --> 
     <fragment 
      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/fragment" 
      android:name="com.***.***.***.MainActivityFragment" 
      tools:layout="@layout/fragment_main" android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

     <!-- The navigation drawer --> 
     <ListView 
      android:id="@+id/left_drawer" 
      android:layout_width="240dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:choiceMode="singleChoice" 
      android:divider="@android:color/transparent" 
      android:dividerHeight="0dp" 
      android:background="#111"/> 

    </android.support.v4.widget.DrawerLayout> 

    <!-- Replace the default action bar --> 
    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_width="match_parent" 
     android:elevation="5dp" 
     android:background="?attr/colorPrimary" /> 

</FrameLayout> 
+0

Только одна последняя вещь (извините за это) мой гамбургер не вращается и не приближается к кнопке «назад», хотя я установил ' true' в моих стилях –

+0

check out this post http://stackoverflow.com/questions/26434504/how-to-implement-drawerarrowtoggle-from-android-appcompat-v7-21-library –

+0

дайте мне знать, если это сработает. –

12

DrawerLayout допускается только 2 детей. Из documentation:

  • Основного зрения содержания (выше FrameLayout) должно быть первым ребенок в DrawerLayout, поскольку порядок XML подразумевает г-упорядочивание и выдвижной ящик должен быть в верхней части содержания.
  • Основное представление контента установлено в соответствии с шириной и высотой родительского представления, , потому что оно представляет весь пользовательский интерфейс, когда ящик навигации находится в .

Попробуйте обертывание ваш Toolbar и fragment в FrameLayout.

+0

Спасибо .. Я уже получил ответ, хотя .. +1 (я знаю, что мы не должны делать подобные комментарии, но я думаю, что правило не имеет смысла, как еще мы должны ценить) –

+0

Это объясняет спасибо, спасибо, за причину проблемы, а не просто решение! –

Смежные вопросы