我想知道为什么click如果我点击内部事件不会冒泡RecyclerView.
我的场景使用一个简单的方法RecyclerView来显示一些TextViews,而其父级View已经OnClickListener注册,以便在有人点击视图时执行某些操作.如果我点击例如TextView,点击事件会正确地冒泡到父母.但如果我点击RecyclerView,点击不会冒泡.奇怪的是,如果我OnClickListener直接设置RecyclerView它也永远不会被解雇.我认为那是万恶之源.
那么,为什么我RecyclerView没有收到任何点击事件?为什么其父级没有收到任何点击事件?
层次结构如下所示:
- View (has an OnClickListener) <- Why no clicks?
- RecyclerView (clickable=false)
- TextView
- TextView
....
Run Code Online (Sandbox Code Playgroud)
我尝试用setFocusable()和setClickable(),但没有运气.
PS:我当前的解决方案OnClickListener在每个TextView内部设置,RecyclerView并getParent()使用performClick()手动将点击传播到父视图.
我使用特殊的类处理程序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) {
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |