2016-06-29 42 views
1

Ich möchte die linke Wischgeste zum Öffnen der Navigationsschublade deaktivieren, da sie mit meiner Suchleiste verschmutzt. Wenn ich die Schublade auf LOCK_MODE_LOCKED_CLOSED setze, wird auch mein Hamburger-Icon deaktiviert.Die Einstellung der Schublade in den Sperrmodus deaktiviert auch das Hamburger-Symbol

toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar);  
drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      drawerToggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
      drawer.setDrawerListener(drawerToggle); 
      drawerToggle.syncState(); 
      drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

Kann mir bitte jemand sagen, was mache ich falsch?

+2

Sie nichts falsch machen. Sie haben kürzlich das Verhalten von "ActionBarDrawerToggle" geändert, um das Öffnen/Schließen des Fachs zu deaktivieren, wenn es gesperrt ist. Setzen Sie die 'Toolbar' als Unterstützung' ActionBar'? –

+0

Ja, ich setze Toolbar als meine ActionBar. – Heisenberg

+0

OK. Ich habe einen Workaround dafür. –

Antwort

1

Sie machen nichts falsch. Sie haben kürzlich das Verhalten von ActionBarDrawerToggle geändert, um das Öffnen/Schließen der Schublade zu deaktivieren, wenn sie gesperrt ist.

Da Ihre Toolbar ist die Unterstützung ActionBar, ist eine Behelfslösung das Toolbar Argument vom ActionBarDrawerToggle Konstruktoraufruf zu entfernen. Dadurch wird die onOptionsItemSelected() Methode aufgerufen, wenn Sie auf den Schalter klicken. Dort können Sie die Element-ID MenuItem überprüfen und die Schublade entsperren, bevor Sie die Umschaltmethode aufrufen.

Die Klasse ActionBarDrawerToggle funktioniert ein wenig anders mit einer ActionBar als eine Toolbar, so dass Sie den folgenden Aufruf hinzufügen müssen, um den Schalter anzuzeigen.

getSupportActionBar.setDisplayHomeAsUpEnabled(true); 

Dann wird Ihr ActionBarDrawerToggle Konstruktoraufruf wie folgt ändern:

drawerToggle = new ActionBarDrawerToggle(this, 
             drawer, 
             R.string.navigation_drawer_open, 
             R.string.navigation_drawer_close) { 
    @Override 
    public void onDrawerClosed(View drawerView) { 
     super.onDrawerClosed(drawerView); 
     drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 
    } 
}; 

Und überschreiben die Activity ‚s onOptionsItemSelected() Methode wie folgt:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if(item.getItemId() == android.R.id.home) { 
     drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); 
     drawerToggle.onOptionsItemSelected(item); 
     return true; 
    } 
    ... 

    return super.onOptionsItemSelected(item); 
} 
+0

Danach sehe ich mein Hamburger Icon nicht mehr. Irgendeine Idee? – Heisenberg

+0

Oh, hoppla! Ja, Sie müssen auch 'getSupportActionBar.setDisplayHomeAsUpEnabled (true);' aufrufen. Ich habe diesen Teil vergessen. Ich werde meine Antwort bearbeiten. –

+0

Funktioniert perfekt. Vielen Dank!! Eine weitere Sache ist jedoch, dass Sie die Schublade standardmäßig im Sperrmodus halten müssen, sonst funktioniert sie erst, wenn Sie die Schublade mindestens einmal geöffnet haben. – Heisenberg