如何在现有布局中添加导航抽屉

时间:2014-06-29 19:30:47

标签: android navigation-drawer

我有一个带有listview.xml的布局,如下所示

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/main">
  <ListView
     android:id="@+id/Planets"
     android:layout_width="fill_parent"
     android:layout_height="match_parent"
     android:divider="#b5b5b5"
     android:dividerHeight="2dp"
     android:background="#fff"/>

 <ListView
     android:id="@+id/stars"
     android:layout_width="fill_parent"
     android:layout_height="match_parent"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:divider="#b5b5b5"
     android:dividerHeight="2dp" >
 </ListView>
 </RelativeLayout>

我想在此布局中添加导航抽屉。为此我有这个布局。

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

<!-- Framelayout to display Fragments -->
<FrameLayout
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" /> 

<!-- Listview to display slider menu -->
<ListView
    android:id="@+id/list_slidermenu"
    android:layout_width="240dp"
    android:layout_height="150dp"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@color/list_divider"
    android:dividerHeight="1dp"        
    android:listSelector="@drawable/list_selector"
    android:background="@color/list_background"/>
 </android.support.v4.widget.DrawerLayout> 

我不知道如何在我的listview.xml中集成抽屉,我已经完成了类似的事情,但却没有为我工作。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main">

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

<!-- Framelayout to display Fragments -->
<FrameLayout
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" /> 

<!-- Listview to display slider menu -->
<ListView
    android:id="@+id/list_slidermenu"
    android:layout_width="240dp"
    android:layout_height="150dp"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@color/list_divider"
    android:dividerHeight="1dp"        
    android:listSelector="@drawable/list_selector"
    android:background="@color/list_background"/>
  </android.support.v4.widget.DrawerLayout>                     

 <ListView
    android:id="@+id/planets"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:divider="#b5b5b5"
    android:dividerHeight="2dp"
    android:background="#fff"/>
 <ListView
    android:id="@+id/stars"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:divider="#b5b5b5"
    android:dividerHeight="2dp" >
</ListView>
</RelativeLayout>

我不知道这样做的正确方法是什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您应该创建一个片段来保存两个ListViews布局(listview.xml)。该片段将在运行时填充您的FrameLayout(这是Activity布局)组件的一部分。

然后,您的活动将在其中包含DrawerLayout FrameLayout(其中包含您在其中定义的任何片段布局)和ListView,其中包含您的抽屉菜单项。

有关详细信息,请查看this link以实现有关DrawerLayout的正确方法。

答案 1 :(得分:0)

DrawerLayout应该是布局文件的根元素

<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">
<!-- Framelayout to display Fragments -->
<FrameLayout
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" /> 
<RelativeLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main">



<!-- Listview to display slider menu -->
<ListView
    android:id="@+id/list_slidermenu"
    android:layout_width="240dp"
    android:layout_height="150dp"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@color/list_divider"
    android:dividerHeight="1dp"        
    android:listSelector="@drawable/list_selector"
    android:background="@color/list_background"/>


 <ListView
    android:id="@+id/planets"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:divider="#b5b5b5"
    android:dividerHeight="2dp"
    android:background="#fff"/>
 <ListView
    android:id="@+id/stars"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:divider="#b5b5b5"
    android:dividerHeight="2dp" >
</ListView>
</RelativeLayout>
  </android.support.v4.widget.DrawerLayout>