我有 ScrollView
在这里面 ScrollView
是 ListView
还有可以垂直滚动的项目。我想要实现的是禁用父级 ScrollView
什么时候 ListView
正在滚动。
因此,我找到了一些教程,并制作了自定义家长 ScrollView
在这里,我可以使用简单的布尔值禁用滚动。
然后我设定 onTouchListener
为了我的 ListView
如果我触摸它,它应该禁用父滚动。如果我松开手指,它应该再次启用。但这一解决方案并不奏效。我正在滚动父对象和 ListView
同时,。
有什么解决办法吗?
代码:
自定义父滚动视图:
class LockableScrollView(context: Context, attributeSet: AttributeSet): ScrollView(context, attributeSet) {
// true if we can scroll (not locked)
// false if we cannot scroll (locked)
private var mScrollable = true
fun setScrollingEnabled(isEnabled: Boolean){
mScrollable = isEnabled
}
@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(ev: MotionEvent?): Boolean {
return if(ev?.action == MotionEvent.ACTION_DOWN){
// if we can scroll pass the event to the superclass
mScrollable && super.onTouchEvent(ev)
}else{
super.onTouchEvent(ev)
}
}
override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
// Don't do anything with intercepted touch events if
// we are not scrollable
return mScrollable && super.onInterceptTouchEvent(ev)
}
}
列表视图:
itemListView.adapter = itemListAdapter
itemListView.setOnTouchListener(View.OnTouchListener { _, motionEvent ->
parentScroll.setScrollingEnabled(motionEvent.action == MotionEvent.ACTION_UP)
return@OnTouchListener false
})
暂无答案!
目前还没有任何答案,快来回答吧!