2014-02-07 20 views
67

Der Titel erklärt alles. Alles, was ich tun möchte, ist zu wissen, ob die Navigationsschublade offen ist oder nicht. Ich suchte viel im Netz und fand die Methode isDrawerOpen(int drawerGravity), konnte aber keine befriedigende Antwort finden, die erklärt, wie man es in einer Methode benutzt. Ich würde mich freuen, wenn mir jemand es erklären würde.Wie erkennt man, ob die Navigationsleiste geöffnet ist?

Vielen Dank im Voraus!

+3

'boolean drawerOpen = mDrawerLayout.isDrawerOpen (mDrawerList)'. mDrawerLayout ist die Schublade und mDrawerList ist die Listenansicht – Raghunandan

+0

@Raghunandan Vielen Dank! –

Antwort

168

Vorausgesetzt, dass Sie eine drawerlayout in XML definiert haben:

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
... 
if(mDrawerLayout.isDrawerOpen(GravityCompat.START)) { 
    //drawer is open 
} 
+0

Bedeutet das, dass die Schublade offen ist? –

+6

Obwohl es für viele offensichtlich sein kann, möchte ich darauf hinweisen, dass isDrawerOpen (GravityCompat.END)) verwendet werden sollte, wenn die Schublade von rechts geöffnet wird (dh Android: layout_gravity = "right"). – Hong

+1

Wenn Sie Sie schließen möchten sollte diesen Kommentar hinzufügen, wenn staments drawer.closeDrawer (Gravity.START); – mehmet

16

Verwendung:

mDrawerLayout.isDrawerOpen() Methode

Beispiel:

if(mDrawerLayout.isDrawerOpen(GravityCompat.START)) { 
     mDrawerLayout.closeDrawer(Gravity.LEFT); //CLOSE Nav Drawer! 
    }else{ 
     mDrawerLayout.openDrawer(Gravity.LEFT); //OPEN Nav Drawer! 
    } 
+3

wenn Schublade geöffnet ist, Schublade öffnen, sonst Schublade schließen: D – ataulm

+0

@ataulm UPPPSSSSSSS danke! – Jorgesys

21
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerToggle = new ActionBarDrawerToggle(
      this,     /* host Activity */ 
      mDrawerLayout,   /* DrawerLayout object */ 
      R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */ 
      R.string.drawer_open, /* "open drawer" description */ 
      R.string.drawer_close /* "close drawer" description */ 
      ) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      getActionBar().setTitle(mTitle); 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      getActionBar().setTitle(mDrawerTitle); 
     } 
    }; 

    // Set the drawer toggle as the DrawerListener 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

Das Zuhörer Verwendung :)

+0

Danke, aber ich benutze keine Aktionsleiste mit Navigationsleiste. Muss es nur in einer Methode verwenden! –

2

shakeJ ist seine die richtige Antwort, und erinnern Sie sich die onDrawerSlide verwenden zu können, andere Funktionen zu feuern ... zum Beispiel habe ich es die StatusBar Farbe zu ändern.

 /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      isOpen = false; 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      isOpen = true; 
     } 
     public void onDrawerSlide(View drawerView,float slideOffset){ 
      super.onDrawerSlide(drawerView,slideOffset); 
      if(!isOpen){ 
       setStatusBarColor("#00102b"); 
      } 
      if(isOpen){ 
       setStatusBarColor("#EFEFF0"); 
      } 
     } 
0

Durch die folgende Art und Weise Sie die Schublade finden kann, ist offen oder in der Nähe ..

public class YourActivity extends AppCompatActivity implements DrawerLayout.DrawerListener { 

    DrawerLayout drawer; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_dash_board); 
final DrawerLayout drawer=(DrawerLayout)findViewById(R.id.container); 
     drawer.setDrawerListener(this); 
    }//onCreate() 

    @Override 
    public void onDrawerOpened(View arg0) { 
     //write your code 
    } 

    @Override 
    public void onDrawerClosed(View arg0) { 

    } 

    @Override 
    public void onDrawerSlide(View arg0, float arg1) { 
     //write your code 
    } 

    @Override 
    public void onDrawerStateChanged(int arg0) { 
     //write your code 
    } 
}//class 
Verwandte Themen