查找触摸是不是在Android中的视图内

Posted

技术标签:

【中文标题】查找触摸是不是在Android中的视图内【英文标题】:Find if a touch is inside a view in Android查找触摸是否在Android中的视图内 【发布时间】:2011-09-16 06:05:50 【问题描述】:

我有一张图片和图片下方的TextView,这是图片的标题。当我触摸文本时,我想将图像的状态更改为选中。我捕获了触摸向上和触摸事件以分别将图像的状态更改为选中和未选中。

我想实现触摸取消,即如果我触摸TextView 内部并拖动外部并移开手指,则图像状态应设置为未选中。我如何知道触摸是否在视图中?

我的申请目标等级是 7。

【问题讨论】:

【参考方案1】:

回答我的问题。我通过将图像视图和文本视图放在视图中解决了这个问题。并将图像视图的属性 duplicateParentState 设置为 true。

【讨论】:

【参考方案2】:

你可以通过标志变量来做,比如当你按下标志时,如果你拖动手指然后像这里一样明智地关闭标志

boolean isDown = false;
public boolean onTouchEvent(MotionEvent event, final MapView mapView) 
    final int action=event.getAction();
    final int x=(int)event.getX();
    final int y=(int)event.getY();

    if (action==MotionEvent.ACTION_DOWN) 
       isDown = true;
    else if(acttion == Motion.ACTION_MOVE)
       isDown = false;
    else if(action === MotionEvent.ACTION_UP)
        if(isDown)
             // do something here
        
    
    return (isDown | super.onTouchEvent(event, mapView));

【讨论】:

谢谢。我的问题是我怎么知道我 Motion.Action_Move 已经移出视图或仍在视图内。如果在用户进行触摸之前它的手指仍在视图内,我不想取消触摸 @user866821 我相信有一个MotionEvent.ACTION_OUTSIDE

以上是关于查找触摸是不是在Android中的视图内的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中的多个视图上同时处理触摸事件

当用户在视图上移动手指时,我们如何获取在 Android 中的 onTouchListener 中触摸的视图的 id?

Android中的错误“只有创建视图层次结构的原始线程才能触摸其视图”[重复]

iOS/Android 是不是可以知道用户何时触摸了广告?

查找在 iphone 中设置动画时触摸子视图的时间?

视图隐藏在android活动中的其他视图后面