开发中遇到个需求,在某个界面加载的recycleview需要禁止掉滑动事件,而在另一个界面,同一个fragmengt类不能静止滑动事件
第一次尝试
创建一个类,并继承RecyclerView 覆写dispatchTouchEvent
private var isCanSc = true
fun setIsCanSc(isCanSc: Boolean) {
this.isCanSc = isCanSc
}
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
return if (isCanSc) {
super.dispatchTouchEvent(ev)
} else {
false
}
}
其他都不需要覆写,但是这个方法导致了该recycleview无法响应点击事件。尝试了许久无法解决
第二次尝试
创建一个类,并继承LinearLayoutManager 覆写canScrollVertically
private var isScrollEnabled = true
fun setScrollEnabled(flag: Boolean) {
isScrollEnabled = flag
}
override fun canScrollVertically(): Boolean {
return isScrollEnabled&&super.canScrollVertically()
}
效果挺ok。
事后编辑
看了一下recycleview的方法,发现是我SB了,只需要一句
recyclerview.isNestedScrollingEnabled = false
就ok了,是我傻逼了。