将导航抽屉添加到包含ListView和Button的内容视图

时间:2015-01-26 04:29:32

标签: android android-layout navigation-drawer

我的视图布局包含ListViewButton

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
            android:background="#5434"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

<ListView
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_alignParentTop="true"
            android:layout_weight="1.0"
            android:id="@+id/itemlistView" tools:ignore="ObsoleteLayoutParam"/>


 <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    tools:ignore="ObsoleteLayoutParam">

       <Button
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:background="@drawable/button"
              android:text="@string/new_item"
              android:id="@+id/listview_addDebtButton"
              android:layout_gravity="center_horizontal"
              android:layout_weight="1.0"
              tools:ignore="ObsoleteLayoutParam"/>
 </LinearLayout>

但现在我要添加Navigation Drawer。使用google developers中的示例代码。但由于示例代码包含一个空的内容视图,我不知道如何执行此操作:

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

<!-- As the main content view, the view below consumes the entire
     space available using match_parent in both dimensions. -->
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!-- android:layout_gravity="start" tells DrawerLayout to treat
     this as a sliding drawer on the left side for left-to-right
     languages and on the right side for right-to-left languages.
     The drawer is given a fixed width in dp and extends the full height of
     the container. A solid background is used for contrast
     with the content view. -->
<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"/>

然而我继续尝试将其作为我的新布局:

<?xml version="1.0" encoding="utf-8"?>

<!-- As the main content view, the view below consumes the entire
         space available using match_parent in both dimensions. -->
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">


    <ListView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:id="@+id/itemlistView" />


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@drawable/button"
            android:text="@string/new_item"
            android:id="@+id/listview_addDebtButton"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1.0"
            />
    </LinearLayout>
</FrameLayout>

<!-- android:layout_gravity="start" tells DrawerLayout to treat
     this as a sliding drawer on the left side for left-to-right
     languages and on the right side for right-to-left languages.
     The drawer is given a fixed width in dp and extends the full height of
     the container. A solid background is used for contrast
     with the content view. -->
<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.view.InflateException错误消息:

error inflating class DrawerLayout。我不知道怎么从这里开始。 “有一个类似的问题,问"How do I add navigation drawer to my existing code?",但这个问题太复杂了,我不能将解决方案应用到我的问题中。任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

试试这样:

根据文档:抽屉布局有两个直接的孩子

  

在DrawerLayout中,添加一个包含主要内容的视图   屏幕(隐藏抽屉时的主要布局)和   另一个包含导航抽屉内容的视图。

从该引用中我使用了一个用于FrameLayout,另一个用于ListView。

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

    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <RelativeLayout
            android:id="@+id/container"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" >

            <ListView
                android:id="@+id/itemlistView"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_alignParentTop="true"
                android:layout_weight="1.0"
                tools:ignore="ObsoleteLayoutParam" />

            <Button
                android:id="@+id/listview_addDebtButton"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_weight="1.0"
                android:background="@drawable/button"
                android:text="@string/new_item"
                tools:ignore="ObsoleteLayoutParam" />
        </RelativeLayout>
    </FrameLayout>

    <ListView
        android:id="@+id/left_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>