【发布时间】:2012-12-13 12:03:48
【问题描述】:
这似乎不是我遇到问题的典型视图布局。
我有两个列表视图。
每个listView 都有touchListener
(其目的是通过调用 dispatchTouchEvent() 到另一个 listView 来同步滚动)
ListView也有onItemClickListener来处理listView行的点击。
到目前为止,一切都按预期工作。
我想在subview-group of the listView's 行中添加另一个clickListener 来处理子视图上的点击事件。
附加此 clickListener 后,我看到 listView 的滚动并不总是有效。
我怀疑它是因为这个子视图的 clickListener 在父 (listView) 的 touchListener 之前检查触摸事件(以查看它是否确实是 click)。
我可以想到两个解决这个问题的方法。
将 touchListener 而不是 clickListener 附加到子级,并为除
FINGER_UP事件之外的所有触摸事件设置为return false。
在FINGER_UP事件上,我执行我最初在 onClickListener 中使用的方法-
public boolean 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); } });
【问题讨论】:
标签: android click touch listener