Parfois, tous les éléments de recyclerView sont déjà visibles pour l'utilisateur.
Dans ce cas, il ne serait pas important pour l'utilisateur de voir l'effet de défilement excessif, car il est impossible de faire défiler et de voir plus d'éléments.
Je sais que pour désactiver l'effet de défilement excessif sur RecyclerView, je peux simplement utiliser:
recyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
mais je ne peux pas savoir quand déclencher cela, quand le défilement n'est pas possible de toute façon.
Comment puis-je identifier que tous les éléments sont entièrement visibles et que l'utilisateur ne peut pas vraiment faire défiler?
Si cela aide à supposer quelque chose, j'utilise toujours LinearLayoutManager (vertical et horizontal) pour RecyclerView.
vous pourriez donner OVER_SCROLL_IF_CONTENT_SCROLLS
un essai. Conformément à la documentation
Autoriser un utilisateur à faire défiler cette vue uniquement si le contenu est suffisamment volumineux pour faire défiler de manière significative, à condition qu'il s'agisse d'une vue pouvant défiler.
Ou vous pouvez vérifier si vous avez suffisamment d'éléments pour déclencher le défilement et activer/désactiver le mode de défilement, selon celui-ci. Par exemple
boolean notAllVisible = layoutManager.findLastCompletelyVisibleItemPosition() < adapter.getItemCount() - 1;
if (notAllVisible) {
recyclerView.setOverScrollMode(allVisible ? View.OVER_SCROLL_NEVER);
}
<Android.support.v7.widget.RecyclerView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:overScrollMode="never"/>
Ajoutez simplement Android:overScrollMode="never"
en XML
Vous pouvez essayer quelque chose comme ceci:
totalItemCount = linearLayoutManager.getItemCount();
firstVisibleItem = linearLayoutManager.findFirstCompletelyVisibleItemPosition()
lastVisibleItem = linearLayoutManager.findLastCompletelyVisibleItemPosition();
if(firstVisibleItem == 0 && lastVisibleItem -1 == totalItemCount){
// trigger the overscroll effect
}
Que vous pourriez ajouter dans la onScrolled()
d'un OnScrollListener
que vous ajoutez sur votre RecyclerView
.