我有一个应用程序,我想在其中实现一个双抽屉-一个从左边,一个从右边。左边的抽屉是应用程序导航,右边的抽屉是结果过滤。
因此,布局是这样的:
<?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”,以及它们各自的重力-“start”和“end”这真的有效!你可以把它们都拉出来。
问题是,当我实现DrawerToggle时-它只打开左边的抽屉,而不关闭右边的抽屉,所以如果右边的抽屉打开,我按下DrawerToggle按钮-左边的抽屉也打开,并与右边的抽屉重叠。
有一对夫妇的解决方案,我试图得到:
1.在右侧制作相同的DrawerToggle按钮,其行为和动画与左侧相同。
1.使抽屉位于我试图打开的抽屉的另一侧-自动关闭(如果左侧抽屉打开,我按下右侧抽屉的开关,反之亦然)。
我还没有想出如何做到这一点,因为DrawerToggle接受DrawerLayout本身作为参数,而不是单个抽屉...
我正在使用支持库。
有人有什么想法吗?先谢谢你。
8条答案
按热度按时间7vhp5slm1#
以下是Double Drawer Activity的代码,可以由其他Activity扩展以实现该Double Drawer Activity,假设它们具有类似OP建议的布局。
blmhpbnm2#
您可以在ToggleButton的处理程序中这样调用它,例如:
其中mDrawer是对您需要打开的特定抽屉的引用(无论是视图还是布局),在您的情况下,是您希望显示的实际ListView。
c2e8gylq3#
可以从材料设计中使用
NavigationView
。4jb9z9bj4#
这里是我的简短的解决方案,如果你想阻止抽屉指示器的动画,如果他们滑动右视图。简单地实现onDrawerSlide方法像这样。
i1icjdpr5#
在onOptionsItemSelected()中使用您想要关闭的抽屉的重力常数(Gravity.LEFT或Gravity.RIGHT)(当您打开另一个抽屉时),如下所示。
mDrawerToggle =实现绘图布局的侦听器对象。绘图侦听器
参见:http://developer.android.com/reference/android/support/v4/app/ActionBarDrawerToggle.html
rbl8hiat6#
我已经解决了在onOptionsItemSelected方法中添加以下代码的问题:
我添加了一个操作按钮并覆盖了操作栏的主页按钮
pw9qyyiw7#
做一个自定义项目,并添加到它的权利,传递给它的权利抽屉。
hc8w905p8#
您可以在同一抽屉中显示两个导航视图,如:
对于活动,请执行以下操作: