2017-08-08 51 views
0

Android抽屉只能打开一次作品。我尝试了几种方法。我的代码:Android抽屉只能打开一次作品

public void openDrawer() { 
     ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close); 
     drawer.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.syncState(); 
     if(drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawers(); 
     } else { 
      drawer.openDrawer(GravityCompat.START); 
     } 
    } 

和方法2:

public void openDrawer() { 
    if(drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawers(); 
    } else { 
     drawer.openDrawer(GravityCompat.START); 
    } 
} 

在这两种情况下,仅适用第一次打开和关闭。

编辑 问题是我从演示者调用方法。如果我将它绑定到Activity中的OnClickListener,它正在工作。我想我需要像preventDefault这样的东西。

回答

1

试试这种方式,它在很多情况下适用于我。

编辑:将此部分添加到您的onCreate()方法。并且只能调用一次。

ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close); 
    drawer.setDrawerListener(mDrawerToggle); 
    mDrawerToggle.syncState(); 

然后设置一个点击收听到您的自定义按钮。

customButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (drawer.isDrawerOpen(navigationView)) { 
        closeDrawer(); 
       } else { 
        openDrawer(); 
       } 
      } 
     }); 

这些辅助方法

public void openDrawer() { 
    drawer.openDrawer(GravityCompat.START); 
} 

public void closeDrawer() { 
    drawer.closeDrawer(GravityCompat.START); 
} 
+0

请@TeodorKolev您使用的工具栏右侧看到编辑答案 – TeodorKolev

+0

? –

+0

没有自定义按钮 – TeodorKolev