Es gibt eine einfachere Möglichkeit, das Scrollen zu deaktivieren (technisch gesehen ist es eher das Abfangen eines Bildlaufereignisses und das Beenden, wenn eine Bedingung erfüllt ist), indem nur die Standardfunktionalität verwendet wird. RecyclerViewhat die Methode aufgerufen addOnScrollListener(OnScrollListener listener), und wenn Sie nur diese verwenden, können Sie das Scrollen stoppen, nur so:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (viewModel.isItemSelected) {
recyclerView.stopScroll();
}
}
});
Anwendungsfall:
Angenommen, Sie möchten das Scrollen deaktivieren, wenn Sie auf eines der darin enthaltenen Elemente klicken, RecyclerViewdamit Sie einige Aktionen damit ausführen können, ohne durch versehentliches Scrollen zu einem anderen Element abgelenkt zu werden. Wenn Sie damit fertig sind, klicken Sie einfach auf das Element erneut, um das Scrollen zu aktivieren. Zu diesem Zweck möchten Sie OnClickListeneran jedes Element in diesem Element anhängen. RecyclerViewWenn Sie also auf ein Element klicken, wird isItemSelectedvon falsezu umgeschaltet true. Auf diese Weise , wenn Sie blättern versuchen, RecyclerViewwird Methode automatisch aufrufen onScrollStateChangedund da isItemSelectedSatz true, wird es sofort zu stoppen, bevor RecyclerViewdie Chance bekam, gut ... zu blättern.
Hinweis: Versuchen Sie zur besseren Benutzerfreundlichkeit, Klicks zu verwenden, GestureListeneranstatt sie OnClickListenerzu verhindern accidental.
RecyclerViewwenn Sie nicht scrollen möchten?