我有一个自定义View子类,我将其渲染到我的图形,另一个View子类(实际上是LinearLayout的子类),我有时会用它来覆盖图形信息。第二个视图包含一个ImageView,我将其用作触发事件的按钮。
正如我实现的那样,在接收onTouchEvent的第一个视图和在其子视图上调用dispathTouchEvent()之间存在意外延迟,并且调用了ImageView的onClickListener的onClick()。这是相关的代码:
@Override
public boolean onTouchEvent(MotionEvent event)
{
if ( getPopupRect().contains(event.getX(), event.getY()) )
{
// translate to relative coordinates
PointF popupOrigin = getPopupPoint();
event.setLocation(event.getX() - popupOrigin.x, event.getY() - popupOrigin.y);
mPopup.dispatchTouchEvent(event);
}
...
}
在我触摸并释放“主”视图之前,不会调用子视图的onClick()方法。
问题:如何删除或最小化此延迟,以便在合理的时间内调用onClick(),而无需进一步的用户操作?
答案 0 :(得分:0)
问题在于“点击”包括按下和发布事件。因此,除非您还释放按钮,否则永远不会获得点击事件。 在子视图上使用OnTouchListener,就像在父视图上一样 - 然后您将能够获得相同的事件。