2017-12-27 22 views
-1

토글을 다시 누른 후 Navigationdrawer를 닫고 싶습니다. 현재 토글이 맞으면 서랍이 열립니다. 항목을 선택하면 서랍을 닫을 수 있습니다.Drawertoggle을 다시 누르면 서랍을 닫습니다.

내 방법으로 서랍을 닫을 수 있습니까?

내 방법 즉 : 내가 생각

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     return true; 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       mDrawerLayout.openDrawer(GravityCompat.START); //THIS OPENS THE DRAWER 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    private void setupDrawerContent(NavigationView navigationView) { 
     navigationView.setNavigationItemSelectedListener(
       new NavigationView.OnNavigationItemSelectedListener() { 
        @Override 
        public boolean onNavigationItemSelected(MenuItem menuItem) { 
         menuItem.setChecked(true); 
         mDrawerLayout.closeDrawers();  //THIS CLOSES THE DRAWER; AFTER A ITEM IS SELECTED 
         return true; 
        } 
       }); 
    } 

답변

1

쉽습니다. 그냥

맞쳐이

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      if (!isDrawerOpen) { 
       mDrawerLayout.openDrawer(GravityCompat.START); 
       isDrawerOpen = true; 
      } else { 
       mDrawerLayout.closeDrawers(); 
       isDrawerOpen = false; 
      } 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

private void setupDrawerContent(NavigationView navigationView) { 
    navigationView.setNavigationItemSelectedListener(
      new NavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(MenuItem menuItem) { 
        menuItem.setChecked(true); 
        mDrawerLayout.closeDrawers();  //THIS CLOSES THE DRAWER; AFTER A ITEM IS SELECTED 
        isDrawerOpen = false; 
        return true; 
       } 
      }); 
} 
+0

"isDrawerOpen"같은 시도가 열려 여부를 새로운 public boolean isDrawerOpen 회원을 도입하여 여부의 추적은 사용할 수 없습니다 :/ –

+0

난 후 자체가 말했듯이,'으로 새로운 isDrawerOpen 멤버/변수를 도입했습니다. – Shark

+0

"mdrawerLayout.isDrawerOpen (null)"을 사용했습니다. 하지만 슬프게도 do not't worked –