2017-08-08 91 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