Android Barre d'outils + Onglet Mise en page + Tiroir, Masquer la barre d'outils lorsque vous faites défiler et prendre TabLayout vers le haut
J'ai une activité qui a tiroir attaché à elle. Chaque menu du tiroir est un fragment, et en vertu de l'une des options du menu j'ai un fragment avec TabLayout
, et chaque onglet contient un RecyclerView
.
Alors maintenant, quand j'ai faites défiler la RecyclerView
, onglet mise en page est arriver caché, mais ToolBar
reste au top. Ce dont j'ai besoin est de ToolBar
pour obtenir cachés(scrollFlags:scroll|enterAlways
), et TabLayout
devriez obtenir affiché en haut.
Donc configuration actuelle est:
Activity with attached DrawerLayout
-> Fragment with TabLayout
-> Tab Fragment 1 with RecyclerView
-> Tab Fragment 2 with RecyclerView
- avez-vous essayé de
hide();
la barre d'outils?getSupportedActionbar.hide();
- Si je vais à la cacher manuellement, puis-je garder une trace de la position de défilement qui je ne veux pas faire.
- Vous pouvez poster votre layout.xml?
- pourquoi ne pas vous utiliser une autre activité pour les onglets et vient de mettre CollapsingToolbarLayout...parce que, avec la même activité, il sera chargé pour vous que vous ne voulez pas les onglets sur d'autres fragments
InformationsquelleAutor Vishal Pawale | 2015-11-30
Vous devez vous connecter pour publier un commentaire.
Moins De Code Plus Efficace
Bonjour @Vishal j'ai trouvé trop pour vous. parce que je suis aussi à la recherche de ce sujet avant un certain temps.
Je l'ai trouvé un brillant bibliothèque nommée MaterialViewPager c'est de personnaliser entièrement avec ce que vous voulez cacher dans le mode de défilement.
Voir la vidéo sur https://www.youtube.com/watch?v=r95Tt6AS18c
Pouvez-vous utiliser la prise en charge de la conception de la bibliothèque? Il a ce comportement intégré à faire exactement ce que vous avez décrit. Il utilise CoordinatorLayout pour accomplir cette tâche.
D'abord vous avez besoin pour mettre en œuvre un défilement de l'auditeur. Ici vous pouvez trouver un exemple HidingScrollListener.
Que vous avez besoin de modifier votre RecyclerView adaptateur. Vous avez besoin d'ajouter une vue vide au-dessus de votre RecyclerView aussi élevé que votre votre Tolbar.
Voici un exemple de mise en page pour votre vue vide.
Que vous avez besoin de remplacer votre adaptateur getItemViewType et getITemCount méthodes comme ci-dessous.
Que dans l'adaptateur onCreateViewHolder méthode renvoie une mise en page correcte de votre RecyclerView la position de likew ci-dessous:
Et enfin ajouter votre HidingScrollListener mise en œuvre de votre RecyclerView comme ci-dessous:
Je l'espère, je comprends votre problème correctement, et mon application peut vous aider.
Bonne chance.
Edit: Vous pouvez mettre en œuvre LoadMore et PullToRefresh facilement mise en œuvre de cette solution. Vous pouvez ajouter votre demande d'api pour loadMore. Il y a un tricy partie dans PullToRefresh. Après vous tirez à rafraîchir, nettoyer vos données et de les informer de l'adaptateur de ne pas oublier de définir visibleItemCount et totalItemCount à 0 dans votre cachette de défilement de la mise en œuvre. Si vous n'avez pas mis à 0, après avoir actualisé votre charge plus ne fonctionnera pas correctement. Vous aurez moins de données que votre nombre d'éléments dans le fonctionnement de la pagination.
J'ai eu la même architecture dans mon application, ce comment je le fais :
La ViewPager utilisés pour les onglets et NestedScrollView utilisé comme FrameLayout pour l'autre fragment, je montre le ViewPager pour les fragments qui a besoin d'onglets et je cacher la NestedScrollView dans les autres cas.
Vous pouvez trouver le comportement ici pour la NestedScrollView FixedScrollingViewBehavior
Vous pouvez essayer le suivant, que j'ai utilisé pour masquer la barre d'outils, et de faire de la scrollview prendre la totalité de l'écran pour la pleine page de lecture dans ma conception de l'application.
Elle est comme suit.
Cela peut être fait de la manière suivante:
Espère que cela aide.
Que vous pouvez nous montrer votre code xml si vous voulez trouver vos bugs,
ci-dessous mon code de partage pour ceux qui veulent mettre en œuvre la Barre d'outils, Tiroir, Onglet, et RecycleView dans les application.
https://github.com/Gujarats/Android-Toolbar-Drawer-tab-recyvleview-
Espère que cela aide
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
Afin de masquer la Barre d'outils, vous pouvez tout simplement faire quelque chose comme ceci:
Si vous voulez montrer à nouveau, vous composez le:
Trouve ici: android lollipop barre d'outils: comment masquer/afficher la barre d'outils pendant le défilement?
DrawerLayout et TabLayout sont les 2 principales méthode de navigation pour android. DrawerLayout et TabLayout montré dans une même activité, faire contre le android développement guildline. Et si vous le faites de votre application sera très difficile à utiliser.
Imaginer que, si l'utilisateur n'a droit à gauche de balayage, si vous le geste de balayage de la pagerview ou la drawerlayout? Je vois que vous pouvez appliquer le geste de balayage à la drawerlayout lorsque l'utilisateur faites glisser votre doigt du bouton droit de bord de l'activité, sinon vous pouvez demander le geste à la pagerview, mais comment vous assurez-vous que l'utilisateur connaît cette règle?
Même les utilisateurs savent comment faites glisser votre activité (les utilisateurs peuvent même sens aujourd'hui), votre application continue de regarder très compliqué.
Ma suggestion est,
Pour masquer la Barre d'outils en tout temps, vous pouvez utiliser :
pour plus d'explications vue url1 ou url2
Supprimer coordonnateur de la mise en page utilisé dans les onglets de l'activité. Utilisation LinearLayout