使用 ExpandableListView 制作导航抽屉

Making a navigation drawer with an ExpandableListView

我正在开发一个应用程序,我想向其中添加一个导航抽屉,其中包含一个 header(图像、全名和电子邮件)和一个 ExpandableListView,用户可以在该应用程序中导航。

到目前为止,我已经创建了带导航系统的 ExpandableListView,但是我没能为抽屉式导航创建 header。

我试图制作一个 <include/> 标签来实现 drawer_layout.xml 中的 header,但无济于事。

这就是我想要的样子(忽略 ExpandableListView 条目;只是一个例子):http://imgur.com/xlsXvd7

这是我的布局文件:

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

    <!-- Activity Content-->
    <FrameLayout
        android:id="@+id/activity_frame"
        android:layout_height="match_parent"
        android:layout_width="match_parent">
    </FrameLayout>

    <!-- Navigation Drawer Items -->
    <ExpandableListView
        android:id="@+id/left_drawer"
        android:layout_height="match_parent"
        android:layout_width="240dp"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:groupIndicator="@android:color/transparent"
        android:divider="@android:color/transparent"
        android:background="#444444"/>

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

drawer_header.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="#444444">
        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:textColor="#ffffff"
            android:text="Example Example"
            android:textSize="14sp"
            android:textStyle="bold"
            android:layout_centerVertical="true"
            android:layout_alignStart="@+id/email" />

        <TextView
            android:id="@+id/email"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#ffffff"
            android:layout_marginLeft="16dp"
            android:text="example@gmail.com"
            android:textSize="14sp"
            android:textStyle="normal"
            android:layout_alignBottom="@+id/circleView"
            android:layout_toEndOf="@+id/circleView" />

    <de.hdodenhof.circleimageview.CircleImageView
        android:layout_width="60dip"
        android:layout_height="60dip"
        android:src="@drawable/ic_face_white_48dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:id="@+id/circleView"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

我也在使用自定义的 ExpandableListAdapter(如果需要,post 代码)。

如有任何帮助,我们将不胜感激。

感谢您的宝贵时间。

您需要将 ExpandableListView 包裹在任何其他视图中。

原因是 DrawerLayout 可以有两个子视图,一个用于 NavigationDrawer,另一个用作 Container View,我正在发布您的 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">

     <!-- Activity Content-->
     <FrameLayout
         android:id="@+id/activity_frame"
         android:layout_height="match_parent"
         android:layout_width="match_parent">
     </FrameLayout>

     <!-- Navigation Drawer Items -->
     <LinearLayout 
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_gravity="start"
        android:layout_width="240dp">

         <include
            layout="@layout/drawer_header" />

        <ExpandableListView
            android:id="@+id/left_drawer"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:layout_gravity="start"
            android:choiceMode="singleChoice"
            android:groupIndicator="@android:color/transparent"
            android:divider="@android:color/transparent"
            android:background="#444444"/>

      </LinearLayout>

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