这似乎不是我遇到问题的典型视图布局。
我有两个列表视图。
每个listView
都有touchListener
(其目的是通过调用 dispatchTouchEvent() 到另一个 listView 来同步滚动)
ListView
还必须onItemClickListener
处理对 listView 行的点击。
到目前为止,一切都按预期工作。
我想在行中添加另一个clickListener
来subview-group of the listView's
处理子视图上的点击事件。
附加此 clickListener 后,我看到 listView 的滚动并不总是有效。
我怀疑它是因为这个子视图的 clickListenerclick
在父(listView)的 touchListener 之前检查触摸事件(以查看它是否确实是 a )。
我可以想到两个解决这个问题的方法。
将 touchListener 而不是 clickListener 附加到子级,并将其
return false
用于除事件之外的所有触摸FINGER_UP
事件。
在FINGER_UP
事件中,我执行我最初在 onClickListener 中使用的方法公共布尔 onInterceptTouchEvent (MotionEvent ev)
实现这个方法来拦截所有的触摸屏运动事件。这使您可以在事件被分派给您的孩子时观看它们,并在任何时候获得当前手势的所有权。
(好吧......我很困惑,我认为触摸事件首先进入子视图,如果孩子不处理触摸,则传播给父母......)
..如何实现方法1?
..请帮助我弄清楚#2并掌握触摸传递机制。
编辑 - 这是我将 OnClickListener 添加到我的子视图的地方。
viewHolder.layout_author.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent profileIntent = new Intent(ImageListAdapter.this.activity, ProfileActivity.class); profileIntent.putExtra("JsonUser", jsonAlbumImage.jsonUser); ImageListAdapter.this.activity.startActivity(profileIntent); } });