2017-06-18 1 views
-3

J'ai fait un NavigationView et inclus getSupportActionBar().setDisplayHomeAsUpEnabled(true); dans mon code pour montrer le bouton hamburger, et cela a fonctionné. mais ensuite j'ai enlevé la barre d'outils par défaut (en réglant AppTheme en styles valeurs à parent="Theme.AppCompat.Light.NoActionBar"), et mis en œuvre ma propre barre d'outils dans la mise en page. Et maintenant, au lieu du bouton Hamburger, il affiche le bouton de retour, bien que le fait de cliquer dessus dessine le NavigationView. Que devrais-je faire?Affichage d'une icône de hamburger dans une barre d'outils personnalisée?

code Java My:

private DrawerLayout sideBar; 
private ActionBarDrawerToggle sideBarToggle; 
private Toolbar actionToolbar; 

@Override 
public void onCreate(...) { 

    sideBar = (DrawerLayout) findViewById(R.id.sqliteLayout); 
    sideBarToggle = new ActionBarDrawerToggle(this, sideBar, actionToolbar, R.string.sideBarOpen, R.string.sideBarClose); 
    actionToolbar = (Toolbar) findViewById(R.id.navAction); 
    sideBar.addDrawerListener(sideBarToggle); 
    sideBarToggle.syncState(); 
    setSupportActionBar(actionToolbar); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    if(sideBarToggle.onOptionsItemSelected(item)){ 
     return true;} 

    return super.onOptionsItemSelected(item); 
} 

Mon code barre d'outils:

<android.support.v7.widget.Toolbar 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/navAction" 
     android:background="@color/colorPrimary" 
     app:theme="@style/Base.Theme.AppCompat.Light.DarkActionBar"> 

    </android.support.v7.widget.Toolbar> 

SOLUTION:

je réorganisés le code java à cela, et enlevé le 3ème argument new ActionBarDrawerToggle(...) et ça a marché!

actionToolbar = (Toolbar) findViewById(R.id.navAction); 
    setSupportActionBar(actionToolbar); 
    sideBar = (DrawerLayout) findViewById(R.id.sqliteLayout); 
    sideBarToggle = new ActionBarDrawerToggle(this, sideBar, R.string.sideBarOpen, R.string.sideBarClose); 
    sideBar.addDrawerListener(sideBarToggle); 
    sideBarToggle.syncState(); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Répondre

1

Appel setSupportActionBar(actionToolbar); avant de configurer votre ActionBarDrawerToggle. Sous le capot, tout le travail est effacé lorsque vous appelez setSupportActionBar par la suite.