使用 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>
我正在开发一个应用程序,我想向其中添加一个导航抽屉,其中包含一个 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>