导航抽屉不从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); 

请帮助..

+0

听起来好像你正在'DrawerListener'方法之一中设置'ivLeft'的'OnClickListener'。你在哪里打电话给你发布的代码块? –

+0

其实我有Baseactivity和儿童活动functionalaity。 此代码位于我的BaseActivity中,以便所有子活动都可以使用相同的功能。 而ivLeft也是公开的。 – Ari

+0

我们需要查看更多周围的相关代码。 –

你的问题的根本原因是,你设置的事实抽屉View的可见度为GONE。然而,你描述的奇怪行为的直接原因是DrawerLayout及其帮助类之一在抽屉状态改变时更新孩子View

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

抽屉View默认处于关闭状态,因此您不需要隐藏它,您可以删除navigationView.setVisibility(View.GONE);行。