我想知道如果我在click
内点击,RecyclerView
事件为什么不会冒出来。
我的方案使用简单的RecyclerView
来显示一些TextView
,而其父View
已注册OnClickListener
,以便在有人点击视图时执行某些操作。
如果我点击例如TextView
点击事件正确地冒泡到父级。但是如果我点击RecyclerView
,点击就不会冒出来。
奇怪的是,如果我直接在OnClickListener
上设置RecyclerView
,它也永远不会被解雇。我认为那是万恶之源。
那么,为什么我的RecyclerView
没有收到任何点击事件?为什么其父母没有收到任何点击事件?
层次结构如下所示:
- View (has an OnClickListener) <- Why no clicks?
- RecyclerView (clickable=false)
- TextView
- TextView
....
我使用setFocusable()
和setClickable()
进行了实验,但没有运气。
PS:我当前的解决方案在OnClickListener
内的每个TextView
上设置了RecyclerView
,并使用getParent()
使用performClick()
将点击传播到父视图手动
答案 0 :(得分:0)
我使用RecyclerView
的特殊类处理程序RecyclerView.OnItemTouchListener
。我可以从消费类中添加。以下是处理程序类的默认实现:
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener(){
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
//Put your code here.
//Called 2 times per touch, on pressdown and on release.
return false; //true will disable scroll view.
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
setDefaultBottomBar();
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});