19 votes

Icône du tiroir de navigation ne s'affiche pas (actionbar Sherlock)

Avoir le tiroir de navigation fonctionnant avec la barre d'action Sherlock mais j'ai du mal à obtenir l'icône à 3 lignes (comme Gmail) au lieu du bouton normal de retour "<". Voici mon code ic_drawer est l'icône à 3 lignes que utilise Gmail

getSupportActionBar().setIcon(R.drawable.myIcon);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
            R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
        public void onDrawerClosed(View view) {

            super.onDrawerClosed(view);
        }

        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    };

40voto

wazim Points 391

Avez-vous essayé d'implémenter la méthode :

    mDrawerToggle.syncState();

Cela a fonctionné pour moi par le passé.

21voto

Dory Points 831

Cette solution a fonctionné pour moi et a affiché l'icône par défaut du tiroir de navigation dans toutes les versions. Ajoutez la bibliothèque SherlockNavigationDrawer d'ici https://github.com/nicolasjafelle/SherlockNavigationDrawer à votre projet. Et changez votre code comme ci-dessous :

SherlockActionBarDrawerToggle mDrawerToggle = new SherlockActionBarDrawerToggle(this,mDrawerLayout,
   R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
   public void onDrawerClosed(View view) {
       super.onDrawerClosed(view);
   }
   public void onDrawerOpened(View drawerView) {
       super.onDrawerOpened(drawerView);
   }
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);

3voto

user818455 Points 539

Ce que vous pouvez faire est créer un style comme ci-dessous:

        <item name="homeAsUpIndicator">@drawable/ic_drawer</item>

Et dans le manifeste Android, appliquez ce thème comme suit:

Cela résoudra le problème d'obtention de l'icône à 3 lignes.

3voto

Raveesh Bhalla Points 462

Bien que je suppose que vous avez probablement compris à présent, je voulais quand même soumettre une réponse :

Modifiez votre code comme suit :

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer,
        R.drawable.ic_drawer, R.string.menu_open, R.string.menu_close) {
    public void onDrawerClosed(View view) {

        super.onDrawerClosed(view);
    }

    public void onDrawerOpened(View drawerView) {
        super.onDrawerOpened(drawerView);
    }
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setIcon(R.drawable.myIcon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);

Fondamentalement, les options de ActionBar que vous définissez dans le code doivent être définies après que le DrawerToggle ait été achevé, et non avant.

2voto

Borys Points 488

Vous pouvez consulter ceci post en premier. Il y a une réponse: "Vous pouvez changer l'icône de retour dans le thème."

@drawable/action_arrow

Mais je pense que vous voulez implémenter Navigation Drawer, donc renseignez-vous à ce sujet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X