Mon application a un viewpager et 4 onglets, chaque onglet ayant de nombreux fragments. Mais je veux juste que ma barre d’outils défile vers le haut/bas tout en faisant défiler recyclerview dans 2 onglets spécifiques. Mais je ne sais pas comment bloquer le défilement de la barre d’outils pour d’autres onglets. J'ai essayé d'importer la barre d'outils pour chaque fragment mais il semble que je ne peux pas le faire. Quelqu'un a une idée pour résoudre ce problème?
Il est fortement déconseillé de modifier les indicateurs de défilement en fonction de l'onglet sélectionné. Le fait que la barre d'outils soit automatiquement renvoyée (et le contenu déplacé vers le bas) lors du défilement vers un onglet non recyclable peut être très choquant et ne correspond probablement pas au modèle d'interaction souhaité ( exaspéré si vos deux RecyclerView
tabs sont côte à côte).
Toutefois, si vous souhaitez le voir en personne, vous pouvez utiliser setScrollFlags () pour définir les indicateurs de défilement par programme:
Toolbar toolbar = ... // your toolbar within an AppBarLayout
AppBarLayout.LayoutParams params =
(AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL
| AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
Pour effacer les drapeaux
params.setScrollFlags(0)
// Show toolbar when we are in maps mode
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) mToolbar.getLayoutParams();
CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
if(isMapIndex) {
params.setScrollFlags(0);
appBarLayoutParams.setBehavior(null);
mAppBarLayout.setLayoutParams(appBarLayoutParams);
} else {
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
mAppBarLayout.setLayoutParams(appBarLayoutParams);
}