RecyclerView 空白区域点击无效的问题

2022年5月20日

最近在开发一个聊天的功能,要求点击空白区域控制底部工具栏的可见性,但是直接调用 recyclerView.setOnClickListener() 没有效果,于是

我们在 RecyclerView 源码中发现它重写了 onTouchEvent() 但却没有处理自身的点击事件(一般会有 performClick()

所以我们需要自己添加触摸监听(RecyclerView没有重写 dispatchTouchEvent() ,所以 setOnTouchListener 使用的还是父级的 ),我们可以在这里进行点击事件的判断

binding.recyclerView.setOnTouchListener { v, event ->
    if (event.action == MotionEvent.ACTION_DOWN) {
        rvScrollX = event.x
        rvScrollY = event.y
    } else if (event.action == MotionEvent.ACTION_UP) {
        if (v.id != 0 && (rvScrollX - event.x).absoluteValue <= 5) {
            // 这个时候我们认为它是点击
            // 执行点击的操作
        }
    }
    false
}

小鑫

写写代码, 掉掉头发。

文章评论