web-dev-qa-db-fra.com

Masquer / Afficher la barre d'outils par programme sur Coordinator Layout

Lorsque je fais défiler mon RecycleViewToolBar masquer ou afficher (avec animation). enter image description here

Comment puis-je retourner ToolBar retour par programme?

42
Artem

Si votre barre d'outils est à l'intérieur d'un AppBarLayout qui est probablement dans votre CoordinatorLayout, quelque chose comme ceci devrait fonctionner.

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
            appBarLayout.setExpanded(true, true);

Ou pour le réduire

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
            appBarLayout.setExpanded(false, true);

Voici la définition

setExpanded(boolean expanded, boolean animate)

Notez que cette méthode est disponible à partir de la v23 de la bibliothèque de support, en voici documentation pour référence, l’essentiel à noter est " Comme avec le défilement de AppBarLayout, this La méthode repose sur le fait que cette disposition est l’enfant direct de CoordinatorLayout. "J'espère que cela vous aidera!

96
Jraco11

Est-ce ce que vous cherchez?

Toolbar toolbar = findViewById(R.id.toolbar);  // or however you need to do it for your code
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0);  // clear all scroll flags

lien: Comment activer/désactiver le défilement par barre d'outils par programmation lors de l'utilisation de la bibliothèque de support de conception

Pour masquer la barre d’outils, vous pouvez faire quelque chose comme ceci:

toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();

Si vous voulez le montrer à nouveau, vous appelez:

toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();
10
johnrao07

Mon problème était très similaire à @Artem. J'ai essayé plusieurs correctifs, mais aucun d'entre eux ne fonctionnait pour moi. La réponse de @ Jraco11 est correcte lorsque vous utilisez AppBarLayout. @ johnrao07 pas travaillé pour moi. Mais j'ai trouvé une solution parfaite à ce problème lorsque nous utilisons Toolbar.

Pour masquer la barre d'outils par programmation

if (toolbar.getParent() instanceof AppBarLayout){
                    ((AppBarLayout)toolbar.getParent()).setExpanded(false,true);
                }

Pour afficher la barre d'outils par programmation

if (toolbar.getParent() instanceof AppBarLayout){
                        ((AppBarLayout)toolbar.getParent()).setExpanded(true,true);

Reportez-vous la réponse originale (réponse de @Android HHT): -par programmation-show-toolbar-after -hidden-by-scrolling-Android-design-library

0
Johnett Mathew