我的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。
答案 0 :(得分:0)
文档
中对此进行了解释public void setToolbarNavigationClickListener(View.OnClickListener onToolbarNavigationClickListener)
使用工具栏构造DrawerToggle时,它会设置单击 导航图标上的监听器。如果你想听点击 禁用DrawerToggle时的导航图标 (setDrawerIndicatorEnabled(boolean),你应该用这个方法调用 你的监听器和DrawerToggle会将点击事件转发给它 抽屉指示器被禁用时的监听器。
答案 1 :(得分:0)
我终于找到了解决方案。而不是在actionBarDrawerToggle上设置setToolbarNavigationClickListener设置工具栏上的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);
}
}
}