使用ExpandableListView创建导航抽屉

时间:2015-10-20 10:15:02

标签: java android xml expandablelistview expandablelistadapter

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

到目前为止,我已经使用导航系统创建了ExpandableListView,但我没有设法为导航抽屉创建标题。

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

这就是我想要的样子(忽略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(如果需要,会发布代码)。

非常感谢任何帮助。

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

您需要将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>