我有一个水平滚动的recyclerview。当用户单击某个项目时,我已禁用了滚动recyclerview的功能。现在,如果用户尝试在锁定列表时滚动列表,我想显示一个弹跳效果,表明他/她无法进一步滚动。
例如:
我有10个项目的列表,用户单击了第5个项目。现在滚动已锁定,当用户尝试滚动时,我想显示用户无法滚动的弹跳效果。
我禁用滚动的工作:
我正在使用以下方法锁定滚动:
class RecyclerViewDisabler(isEnable: Boolean = true) : RecyclerView.OnItemTouchListener {
var isEnable = true
init {
this.isEnable = isEnable
}
override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
return if(!isEnable){
rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING
}else{
false
}
}
override fun onTouchEvent(rv: RecyclerView, e: MotionEvent) {}
override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {}
}
我尝试产生弹跳效果:
override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
x = rv.x.toInt()
y = rv.y.toInt()
return if(!isEnable){
if(rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING){
rv.smoothScrollBy((x + 1000), y) //Bounce front
}else{
rv.smoothScrollBy(x, y) //Bounce back
}
rv.scrollState == RecyclerView.SCROLL_STATE_DRAGGING
}else{
false
}
}
但是它不起作用。我该如何实现?