我正在使用Android应用,我在那边有一个导航抽屉。由于导航抽屉工具栏不能透明,并且无法更改结束三点按钮图标,因此我选择隐藏该工具栏,并显示我的自定义布局。它将为我提供所需的所有功能。
但我现在面临的问题是,一旦活动开始,如果我点击自定义菜单按钮,它就不会打开。一旦我拖动它并打开,之后每当我点击菜单按钮时它就会打开导航抽屉。
我可能会失踪什么?这就是我正在做的事情,同时调试它甚至进入其他部分,但是没有打开。
在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);
请帮助..
答案 0 :(得分:2)
问题的根本原因在于您将抽屉View
的可见性设置为GONE
。但是,您所描述的奇怪行为的直接原因是,当抽屉状态发生变化时,DrawerLayout
及其中一个帮助程序类如何更新子View
。
您设置为打开和关闭抽屉的OnClickListener
正在按预期工作。它似乎没有,因为抽屉View
是GONE
。但是,当您通过拖动手动打开抽屉时,ViewDragHelper
使用的DrawerLayout
会触发一个显式将抽屉设置为VISIBLE
的回调方法。以编程方式打开抽屉时不会触发此回调 - 也就是说,使用openDrawer()
方法 - 这解释了为什么仅通过单击自定义切换按钮来显示抽屉的原因。将抽屉拖动一次后,抽屉View
可见,然后切换按预期工作。
默认情况下,抽屉View
处于关闭状态,因此您无需隐藏它,只需删除navigationView.setVisibility(View.GONE);
行即可。