2 votes

Écouteur de clics pour le bouton arrière du tiroir de navigation dans Android

J'utilise NavigationDrawer dans Android. Il fonctionne correctement. Maintenant, je veux changer l'image du bouton arrière de NavigationDrawer et pour cela, j'ai utilisé ceci mDrawerToggle.setDrawerIndicatorEnabled(false); il cache l'image par défaut du bouton arrière. et maintenant changez l'image en utilisant ceci mDrawerToggle.setHomeAsUpIndicator(R.mipmap.ic_launcher); mais lorsque l'on clique sur le tiroir de la navigation personnalisée, le bouton de retour ne fonctionne pas, comment gérer cela ?

mon code est

 public void setUp(int fragmentId, DrawerLayout drawerLayout, final Toolbar toolbar) {
    containerView = getActivity().findViewById(fragmentId);
    mDrawerLayout = drawerLayout;
    mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
        @Override
        public void onDrawerOpened(View drawerView) {
            is= false;
            super.onDrawerOpened(drawerView);

            getActivity().invalidateOptionsMenu();
        }
        @Override
        public void onDrawerClosed(View drawerView) {
            is= true;
            super.onDrawerClosed(drawerView);

            getActivity().invalidateOptionsMenu();
        }
        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, slideOffset);

        }
    };

    mDrawerToggle.setHomeAsUpIndicator(R.mipmap.ic_launcher);
mDrawerToggle.setDrawerIndicatorEnabled(false);

    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mDrawerToggle.syncState();
        }
    });

}

0voto

shridutt kothari Points 2038

Pour changer l'icône du bouton arrière de NavigationDrawer, vous devez appeler la méthode suivante, avec votre image resourceid :

mDrawerToggle.setHomeAsUpIndicator(resId);

et la méthode setDrawerIndicatorEnabled() ne doit pas être définie sur false pour mettre à jour l'icône :

mDrawerToggle.setDrawerIndicatorEnabled(false);

parce que c'est setDrawerIndicatorEnabled() est fixé à false il fera deux choses :

  1. désactive l'icône HomeAsUpIndicator
  2. désactive le clickListener.

Vous pouvez également l'essayer avec Actionbar :

La fonction ci-dessous est ajoutée dans les API Android de niveau 18 et supérieur.

ActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

Si vous utilisez la bibliothèque de soutien, essayez ceci :

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

Vous pouvez également l'essayer avec les Styles :

L'indicateur d'affordance "up" est fourni par un drawable spécifié dans l'attribut homeAsUpIndicator du thème. Pour le remplacer par votre propre version personnalisée, il faut procéder comme suit :

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
    <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
</style>

Si votre application prend en charge les versions antérieures à la version 3.0, veillez à placer cette version du thème personnalisé dans values-v11 ou un fichier similaire.

si ça ne marche toujours pas, vous pouvez essayer de le remplacer :

<item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>

avec :

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

0voto

Ajoutez ceci à votre menu d'options de l'auditeur sélectionné.

@Override

public boolean onOptionsItemSelected(MenuItem item) {
    Intent intent;
    switch (item.getItemId()) {

        case android.R.id.home:
            onBackPressed();
            break;

    }
    return true;
}

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