Yalnızca standart işlevselliği kullanarak kaydırmayı devre dışı bırakmanın daha basit bir yolu vardır (teknik olarak bir kaydırma olayının durdurulması ve bir koşul karşılandığında sona erdirilmesi). RecyclerView
yöntemi denir addOnScrollListener(OnScrollListener listener)
ve sadece bunu kullanarak kaydırma işlemini durdurabilirsiniz, sadece:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (viewModel.isItemSelected) {
recyclerView.stopScroll();
}
}
});
Kullanım örneği:
İçerideki öğelerden birine tıkladığınızda kaydırmayı devre dışı bırakmak istediğinizi varsayalım, RecyclerView
böylece yanlışlıkla başka bir öğeye kaydırmaktan rahatsız olmadan bazı eylemleri gerçekleştirebilirsiniz ve öğeyi tamamladığınızda, kaydırmayı etkinleştirmek için öğeyi tekrar seçin. Bunun için, eklemek isterim OnClickListener
içindeki her öğenin RecyclerView
, yani bir öğenin üzerine tıkladığınızda, bu geçiş olacağını isItemSelected
gelen false
etmek true
. Bu şekilde kaydırmaya çalıştığınızda, RecyclerView
otomatik olarak yöntemi çağırır onScrollStateChanged
ve olarak isItemSelected
ayarlandığından , şansı yakalamadan true
hemen önce durur RecyclerView
, iyi ... kaydırma.
Not: daha iyi kullanılabilirlik için tıklamaları önlemek GestureListener
yerine kullanmayı deneyin .OnClickListener
accidental
RecyclerView
Kaydırma yapmak istemiyorsanız ne kullanmanız gerekir ?