导航抽屉不从cutom菜单按钮开放
问题描述:
我正在开发Android应用程序,我在那里有一个导航抽屉。由于导航抽屉工具栏不能透明,并且结尾三点按钮图标无法更改,所以我选择隐藏该工具栏并显示自定义布局。它会给我所有需要的功能。导航抽屉不从cutom菜单按钮开放
但我现在面临的问题是,一旦活动开始,如果我点击自定义菜单按钮,它不会打开。一旦我将它拖拽并打开,之后每当我点击菜单按钮时,它就会打开导航抽屉。
我可能会错过什么?这是我正在做的事情,同时调试它甚至来到其他部分,但不打开。
在BaseActivity:
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ivLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (drawer.isDrawerOpen(Gravity.LEFT)) {
drawer.closeDrawer(Gravity.LEFT);
} else {
drawer.openDrawer(Gravity.LEFT);
}
}
});
在任何一个子活动:
toolbar.setVisibility(View.GONE);
navigationView.setVisibility(View.GONE);
请帮助..
答
你的问题的根本原因是,你设置的事实抽屉View
的可见度为GONE
。然而,你描述的奇怪行为的直接原因是DrawerLayout
及其帮助类之一在抽屉状态改变时更新孩子View
。
您设置为打开和关闭抽屉的OnClickListener
正常工作。它似乎不是,因为抽屉View
是GONE
。但是,通过拖动手动打开抽屉时,DrawerLayout
使用的ViewDragHelper
正在触发回调方法,该方法明确将抽屉设置为VISIBLE
。当抽屉以编程方式打开时(即使用openDrawer()
方法),此回调不会被触发 - 这就解释了为什么抽屉只是通过单击您的自定义切换按钮才显示。将抽屉拖动一次后,抽屉View
就会显示出来,然后切换按预期工作。
抽屉View
默认处于关闭状态,因此您不需要隐藏它,您可以删除navigationView.setVisibility(View.GONE);
行。
听起来好像你正在'DrawerListener'方法之一中设置'ivLeft'的'OnClickListener'。你在哪里打电话给你发布的代码块? –
其实我有Baseactivity和儿童活动functionalaity。 此代码位于我的BaseActivity中,以便所有子活动都可以使用相同的功能。 而ivLeft也是公开的。 – Ari
我们需要查看更多周围的相关代码。 –