如果内部滚动,如何禁用外部滚动视图?

bksxznpy  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(415)

我有 ScrollView 在这里面 ScrollViewListView 还有可以垂直滚动的项目。我想要实现的是禁用父级 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
})

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题