导航抽屉无法从cutom菜单按钮打开

时间:2016-05-12 12:47:18

标签: android navigation-drawer

我正在使用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);

请帮助..

1 个答案:

答案 0 :(得分:2)

问题的根本原因在于您将抽屉View的可见性设置为GONE。但是,您所描述的奇怪行为的直接原因是,当抽屉状态发生变化时,DrawerLayout及其中一个帮助程序类如何更新子View

您设置为打开和关闭抽屉的OnClickListener正在按预期工作。它似乎没有,因为抽屉ViewGONE。但是,当您通过拖动手动打开抽屉时,ViewDragHelper使用的DrawerLayout会触发一个显式将抽屉设置为VISIBLE的回调方法。以编程方式打开抽屉时不会触发此回调 - 也就是说,使用openDrawer()方法 - 这解释了为什么仅通过单击自定义切换按钮来显示抽屉的原因。将抽屉拖动一次后,抽屉View可见,然后切换按预期工作。

默认情况下,抽屉View处于关闭状态,因此您无需隐藏它,只需删除navigationView.setVisibility(View.GONE);行即可。