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). RecyclerViewyö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, RecyclerViewbö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 OnClickListeneriçindeki her öğenin RecyclerView, yani bir öğenin üzerine tıkladığınızda, bu geçiş olacağını isItemSelectedgelen falseetmek true. Bu şekilde kaydırmaya çalıştığınızda, RecyclerViewotomatik olarak yöntemi çağırır onScrollStateChangedve olarak isItemSelectedayarlandığından , şansı yakalamadan truehemen önce durur RecyclerView, iyi ... kaydırma.
Not: daha iyi kullanılabilirlik için tıklamaları önlemek GestureListeneryerine kullanmayı deneyin .OnClickListeneraccidental
RecyclerViewKaydırma yapmak istemiyorsanız ne kullanmanız gerekir ?