android lollipop barre d'outils: comment masquer/afficher la barre d'outils pendant le défilement?
Je suis en utilisant la nouvelle barre d'outils widget introduit dans le appcompat /soutien-v7. Je voudrais masquer/afficher la barre d'outils en fonction de si l'utilisateur fait défiler vers le haut/bas de la page, tout comme dans la nouvelle de Google playstore application ou un Kiosque app. Est-il quelque chose de construit dans la barre d'outils widget pour cela ou dois-je l'utiliser en conjonction avec FrameLayout et ObservableScrollView?
- A ma réponse de l'aide? Si oui, veuillez les accepter ou de les demander quel est manquant.
- n'ai pas essayé encore. Va certainement revenir. Également à la recherche pour les pensées des autres..
- Salut nomongo avez-vous trouvé une solution pour ce problème?
InformationsquelleAutor nomongo | 2014-10-24
Vous devez vous connecter pour publier un commentaire.
Autant que je sache, il n'y a rien construire en qui fait cela pour vous. Cependant, vous pourriez avoir un coup d'oeil à la Google IO du code, en particulier la BaseActivity. Recherche pour "auto hide" ou regarder
onMainContentScrolled
Dans le but de cacher la
Toolbar
vous pouvez tout simplement faire quelque chose comme ceci:Si vous voulez montrer à nouveau, vous composez le:
@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mIsShowing) { hideToolBar(); mIsShowing = false; } else { showToolBar(); mIsShowing = true; } return super.dispatchTouchEvent(ev); } private void hideToolBar() { mToolBar.animate().translationY(-mToolBar.getBottom()) .setInterpolator(new AccelerateInterpolator()).start(); }
private void showToolBar() { mToolBar.animate().translationY(0) .setInterpolator(new DecelerateInterpolator()).start(); }
Pour cacher la barre d'outils, vous pouvez le faire :
Donc vous avez juste à eu un défilement de l'auditeur et de masquer la barre d'outils lorsque l'utilisateur défiler !
Cacher:
Spectacle:
La réponse est simple. Mettre en œuvre
OnScrollListener
et de masquer/afficher la barre d'outils de l'auditeur. Par exemple, si vous avez listview/recyclerview/gridview, puis suivre l'exemple.Dans votre
MainActivity Oncreate
méthode, initialiser la barre d'outils.Et de mettre en œuvre l'
OnScrollListener
J'ai eu l'idée de: https://stackoverflow.com/a/27063901/1079773
Android d'aide à la Conception de la Bibliothèque peut être utilisée pour afficher/masquer la barre d'outils.
De voir cela.
http://android-developers.blogspot.kr/2015/05/android-design-support-library.html
Et il y a le détail des échantillons ici.
http://inthecheesefactory.com/blog/android-design-support-library-codelab/en
Il ya effectivement un certain nombre de façons de masquer/afficher la barre d'outils pendant que vous êtes le défilement du contenu. Une des façons est de le faire via l'Android d'aide à la Conception de la Bibliothèque ou, plus spécifiquement, le Coordonnateur de la mise en page aka. doté de super-pouvoirs cadre de mise en page.
Fondamentalement, tout ce que vous devez faire est d'avoir la structure suivante dans votre fichier de mise en page et vous devriez être en mesure d'atteindre le résultat que vous souhaitez.
J'ai fait une vidéo pour expliquer comment il peut être fait dans une étape par étape manière. N'hésitez pas à consulter et laissez-moi savoir si cela aide. Merci! 🙂
https://youtu.be/mEGEVeZK7Nw
J'ai essayé de mettre en œuvre le même comportement, ici, c'est le choc de code d'affichage et masquage de la barre d'outils (mis quelle que soit la classe contenant votre RecyclerView):
J'ai inclus les dp de la fonction de convertir les pixels du dp, mais évidemment de définir à ce que votre barre d'outils de la hauteur. (remplacer dp(48) avec la barre d'outils de la hauteur)
Où vous l'installation de votre RecyclerView inclure ce:
Cependant, il ya un couple de questions supplémentaires si vous utilisez également un SwipeRefreshLayout.
J'ai dû mettre le marginTop du premier élément de la carte pour le RecyclerView de la Barre d'outils à la taille de décalage d'origine. (Un peu d'un hack, je sais). La raison pour cela est, j'ai trouvé que si j'ai changé mon code ci-dessus pour comprendre le changement de la marginTop de la recyclerView pendant le défilement, c'était une grande nervosité de l'expérience. Donc, c'est comment j'ai surmonté ça. Donc, fondamentalement, le programme d'installation de votre réseau de manière à ce que votre barre d'outils flottante sur le dessus de la RecyclerView (clipping c') quelque Chose comme ceci (dans onBindViewHolder de votre personnalisé RecyclerView adaptateur) :
Et enfin, puisqu'il y a un grand décalage de la RecyclerViews actualiser cercle sera coupé, de sorte que vous aurez besoin de le compenser (en arrière dans le onCreate de votre classe à la tenue de votre RecyclerView):
J'espère que cela aide quelqu'un. Sa ma première réponse détaillée, donc j'espère que j'ai été assez détaillé.
Pour masquer le menu pour un fragment:
Il suffit d'ajouter cette propriété à l'intérieur de votre barre d'outils et sa fait
N'est pas génial
J'ai mis en place une classe utilitaire pour faire toute la masquer/afficher la Barre d'outils de l'animation lors du défilement. Vous pouvez voir l'article ici http://rylexr.tinbytes.com/2015/04/27/how-to-hideshow-android-toolbar-when-scrolling-google-play-musics-behavior/. Le code Source est ici https://github.com/rylexr/android-show-hide-toolbar.
Une bibliothèque et une démo avec le code source complet pour le défilement des barres d'outils ou de n'importe quel type d'en-tête peut être téléchargé ici:
https://github.com/JohannBlake/JBHeaderScroll
En-têtes peuvent être des Barres d'outils, LinearLayouts, RelativeLayouts, ou quel que soit le type de vue que vous utilisez pour créer un en-tête.
De la zone avec défilement peut être tout type de défilement des contenus, y compris contrôle ListView, le ScrollView, WebView, RecyclerView, RelativeLayout, LinearLayout ou ce que vous voulez.
Il y a même un support pour les sous-en-têtes.
C'est en effet une entreprise complexe à synchroniser les en-têtes (barres d'outils) et le contenu défilant la façon dont c'est fait dans Google Kiosque à journaux.
Cette bibliothèque ne nécessite pas la mise en œuvre de tout type de onScrollListener.
Les solutions énumérées ci-dessus par les autres ne sont qu'à moitié cuit solutions qui ne prennent pas en considération le fait que le bord supérieur du défilement de la zone de contenu sous la barre d'outils doit d'abord être aligné sur le bord inférieur de la barre d'outils, puis pendant le défilement de la zone de contenu doit être repositionné et, éventuellement, redimensionné. Le JBHeaderScroll gère toutes ces questions.
Il y a un Android bibliothèque appelée Android d'aide à la Conception de la Bibliothèque qui est une pratique de la bibliothèque où vous pouvez trouver de l'ensemble de ces Matériaux conception de fantaisie choses que le Matériau de la documentation présente sans vous dire comment les faire.
C'est bien présenté dans ce Android post de Blog. "L'Effondrement de la Barre d'outils" en particulier, est-ce que vous cherchez.