Android 如何使用ActionBarDrawerToggle关闭左侧和右侧;右导航抽屉?

Android 如何使用ActionBarDrawerToggle关闭左侧和右侧;右导航抽屉?,android,actionbardrawertoggle,Android,Actionbardrawertoggle,我的activity.xml中有以下布局 ` ` 不,我继续在我的工具栏小部件上添加了ActionBarDrawerToggle,我想从汉堡包图标中得到的行为是,如果我点击它左抽屉打开(工作),我再次点击它左抽屉关闭(工作),我通过从右向左拖动打开右抽屉,再加上汉堡包图标变为箭头(工作),如果我点击箭头图标,它也会关闭右抽屉(不工作) 正如你所看到的,我希望汉堡图标根据哪个抽屉是打开的来关闭左右两个抽屉,我的方法是听箭头图标的点击,决定哪个抽屉是打开的,然后关闭它。我不知道如何在Action

我的activity.xml中有以下布局

`


`

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


正如你所看到的,我希望汉堡图标根据哪个抽屉是打开的来关闭左右两个抽屉,我的方法是听箭头图标的点击,决定哪个抽屉是打开的,然后关闭它。我不知道如何在ActionBarDrawerToggle类自动添加的汉堡或箭头图标上设置onClickListener。

文档中对此进行了解释

公共无效设置工具栏导航单击侦听器(View.OnClickListener onToolbarNavigationClickListener)

当使用工具栏构造抽屉切换时,它将设置单击 导航图标上的侦听器。如果你想听到点击 禁用抽屉切换时的导航图标 (SetDrainerIndicatorEnabled(布尔),您应该使用 您的侦听器和抽屉切换会将单击事件转发到该文件夹 禁用抽屉指示器时的侦听器


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

toolbar.setNavigationOnClickListener(new toolBarNavigationIconListener());
如下所示

    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);
        }
    }
}

我也试过了&仍然没有得到响应。
actionBarDrawerToggle.setToolbarNavigationClickListener(新视图.OnClickListener(){@Override public void onClick(视图v){Log.d(“ICON_CLICKED”,“CLICKED”);})
我会仔细检查您的代码,因为我怀疑文档中是否会说明这一点。您能指出使用此侦听器的一些示例代码吗?也许我可以将我的示例代码与它进行比较,看看出了什么问题。感谢您分享您的解决方案。要理解它,我想知道您的变量
storeDrawer是什么
定义了什么?
    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);
        }
    }
}