DrawerLayout双抽屉(同时向左和向右抽屉)

我有一个应用程序,我想在其中实现一个双抽屉-一个在左边,另一个在右边。左抽屉用于应用程序导航,右抽屉用于结果过滤。


因此,布局如下所示:


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


    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:background="@color/light_grey"

        android:orientation="vertical">


        <GridView

            android:id="@+id/gridview"

            style="@style/GridViewStyle"

            android:layout_width="fill_parent"

            android:layout_height="fill_parent"

            android:gravity="center"

            android:horizontalSpacing="7dp"

            android:stretchMode="columnWidth"

            android:verticalSpacing="7dp" />

    </LinearLayout>


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


    <ListView

        android:id="@+id/right_drawer"

        android:layout_width="240dp"

        android:layout_height="match_parent"

        android:layout_gravity="end"

        android:background="#111"

        android:choiceMode="singleChoice"

        android:divider="@android:color/transparent"

        android:dividerHeight="0dp" />

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

您可以在此处清楚地看到“ left_drawer”和“ right_drawer”,以及它们各自的重力-“开始”和“结束”,这实际上有效!您可以将它们全部拉出。


问题是,当我实现DrawerToggle时-它仅打开左抽屉,而没有关闭右抽屉,因此,如果右抽屉被打开并且我按DrawerToggle按钮-左抽屉也将打开,并且与右抽屉重叠。


我正在尝试几种解决方案:


在右侧创建相同的DrawerToggle按钮,其行为和动画与左侧相同。

将抽屉放在我要打开的抽屉的另一侧-自动关闭(如果左抽屉打开并且我按下右抽屉的扳钮,反之亦然)。

而且我还没有弄清楚该怎么做,因为DrawerToggle接受DrawerLayout本身作为参数,而不是单个抽屉...


我正在使用支持库。


有人有想法么?先感谢您。


冉冉说
浏览 632回答 3
3回答

慕标琳琳

您可以在ToggleButton的处理程序中这样调用它,例如:mDrawerLayout.openDrawer(mDrawer);mDrawerLayout.closeDrawer(mDrawer);其中mDrawer是对您需要打开的特定抽屉(是视图还是布局)的引用,在这种情况下,是您希望显示的实际ListView。
打开App,查看更多内容
随时随地看视频慕课网APP