0

我的 activity.xml 中有以下布局

`

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/store_page_layout"
    tools:context=".StorePage">
    <include
        android:id="@+id/store_page_toolbar"
        layout="@layout/toolbar"/>
    <android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/store_drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/store_page_toolbar">
        <FrameLayout
            android:id="@+id/container_body"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/container_body_height"
            android:layout_weight="1">
            <android.support.v7.widget.CardView
                xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view"
                android:layout_gravity="center"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:layout_marginRight="16dp"
                android:layout_marginLeft="16dp"
                android:elevation="6dp"
                card_view:cardCornerRadius="4dp"
                android:background="@drawable/landing_animated_button_background">
            </android.support.v7.widget.CardView>
        </FrameLayout>
        <android.support.v7.widget.RecyclerView
            android:id="@+id/store_menu_drawer"
            android:layout_width="@dimen/navigation_drawer_width"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="@color/black_200"/>
        <android.support.v7.widget.RecyclerView
            android:id="@+id/store_cart_drawer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="end"
            android:layout_marginLeft="@dimen/nav_drawer_left_min_margin"
            android:background="@color/black_200"/>
    </android.support.v4.widget.DrawerLayout>
</RelativeLayout>

`

不,我继续在我的工具栏小部件上添加了 ActionBarDrawerToggle,我想要从汉堡包图标中获得的行为是,如果我点击它,左抽屉打开(工作),我再次点击它,左抽屉关闭(工作),我打开右抽屉从右向左拖动加上汉堡图标变为箭头(工作),如果我点击箭头图标,它也会关闭右抽屉(不工作)

如您所见,我希望汉堡图标根据哪个抽屉打开来关闭左右抽屉,我的方法是听点击箭头图标并决定哪个抽屉打开然后关闭它。我无法弄清楚如何在 ActionBarDrawerToggle 类自动添加的汉堡包或箭头图标上设置 onClickListener。

4

2 回答 2

0

我终于想出了解决办法。而不是在 actionBarDrawerToggle 上设置 setToolbarNavigationClickListener 在 Toolbar 上设置 setNavigationOnClickListener 效果很好。我的代码如下。

toolbar.setNavigationOnClickListener(new toolBarNavigationIconListener());

而 OnClickListener 如下。

    private class toolBarNavigationIconListener implements View.OnClickListener {
    @Override
    public void onClick(View v) {
        if(!storeDrawer.isDrawerOpen(Gravity.RIGHT) && !storeDrawer.isDrawerOpen(Gravity.LEFT)) {
            storeDrawer.openDrawer(Gravity.LEFT);
        } else if(storeDrawer.isDrawerOpen(Gravity.LEFT)) {
            storeDrawer.closeDrawer(Gravity.LEFT);
        } else if(storeDrawer.isDrawerOpen(Gravity.RIGHT)) {
            storeDrawer.closeDrawer(Gravity.RIGHT);
        }
    }
}
于 2015-12-08T12:09:32.600 回答
0

这在文档中进行了解释

http://developer.android.com/reference/android/support/v7/app/ActionBarDrawerToggle.html#setToolbarNavigationClickListener(android.view.View.OnClickListener)

公共无效 setToolbarNavigationClickListener (View.OnClickListener onToolbarNavigationClickListener)

当 DrawerToggle 使用 Toolbar 构造时,它会在 Navigation 图标上设置点击侦听器。如果你想在 DrawerToggle 被禁用时监听导航图标的点击(setDrawerIndicatorEnabled(boolean),你应该用你的监听器调用这个方法,当抽屉指示器被禁用时,DrawerToggle 将把点击事件转发给那个监听器。

于 2015-12-07T11:28:02.717 回答