2013-05-22 3 views
3

Я пытался сделать DrawerLayout, который имеет ViewPager и LinearLayout, прикрепленный к нижней части DrawerLayout. Проблема в том, что ViewPager и LinearLayout перекрываются в верхней части представления, и все мои усилия по перемещению LinearLayout вниз потерпели неудачу.Drawerlayout children views overlapping

XML-макета:

<?xml version="1.0" encoding="utf-8"?> 
<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" > 

     <android.support.v4.view.ViewPager 
      android:id="@+id/viewpager" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" > 

      <android.support.v4.view.PagerTabStrip 
       android:id="@+id/tabstrip" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" /> 
     </android.support.v4.view.ViewPager> 

     <LinearLayout 
      android:id="@+id/linear_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_below="@id/base_activity_viewpager" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/textview" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:textAppearance="@android:style/TextAppearance.Medium" 
       android:textIsSelectable="false" /> 
     </LinearLayout> 

     <!-- Naviagtion drawer --> 

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

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

Я попытался, добавив несколько вещей linear_layout:

  1. android:layout_gravity="bottom" (вызывает IllegalStateException)
  2. android:layout_below="@id/viewpager"
  3. android:layout_alignparentbottom="true"

Но все эти значения, похоже, игнорируются, даже изменение android:layout_width из LinearLayout игнорируется. Я думаю, что я пропускаю что-то очевидное, но если у кого-то есть предложения о том, как это сделать, мы будем очень благодарны.

ответ

7

В ящике допускается только 2 ребенка, первый - основной вид контента, второй - ящик. Вам нужно объединить два первых вида в линейную компоновку. http://developer.android.com/training/implementing-navigation/nav-drawer.html

+0

Благодарим вас, я должен был внимательно прочитать обучение – Meatje

+0

Может ли второй ребенок быть чем-то другим, кроме списка, например, linearlayout или любым другим видом? Я пытался поставить LinearLayout с андроид: layout_gravity = "старт" и у меня была эта ошибка: ClassCastException: android.widget.LinearLayout $ LayoutParams не может быть приведен к android.support.v4.widget.DrawerLayout $ LayoutParams – BigDan

+0

@ BigDan Возможно, но убедитесь, что вы передаете правильный объект (ваш LinearLayout) для методов 'isDrawerOpen',' closeDrawer' и т. Д. –