【问题标题】:Making a navigation drawer with an ExpandableListView使用 ExpandableListView 制作导航抽屉
【发布时间】:2015-10-20 10:15:01
【问题描述】:

我正在开发一个应用程序,我想向其中添加一个导航抽屉,其中包含一个标题(图像、全名和电子邮件)和一个 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(如果需要,将发布代码)。

任何帮助将不胜感激。

感谢您的宝贵时间。

【问题讨论】:

  • 您可以将ExpandableListView 包装在LinearLayout 中,并向LinearLayout 添加其他布局

标签: java android xml expandablelistview expandablelistadapter


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。如果我把所有东西都放在一个 LinearLayout 中,我将什么参数传递给 boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); ?目前它接受 ExpandableListView。
  • id 提供给LinearLayout,然后在java 中传递LinearLayout
  • 非常感谢老兄。你为我节省了大量时间。干杯。
猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多