安卓 : Get view only on which touch was released

标签 android drag touch-event ontouchlistener motionevent

我的处境很棘手,希望你能帮助我。我有几个 View (TextView),在线性布局中一个接一个地水平放置。当我按下textview1,将手指拖动到任何其他textview并释放触摸时,我希望能够获取手指被抬起的 View (textview)。

我查看了 TouchListener api,它说每个事件都以 ACTION_DOWN 事件操作开始。由于其他 TextView 不会触发该事件,因此我如何获取对我抬起手指的 TextView 的引用?我什至尝试过,action_up 只会在触发 action_down 事件的 textView 上触发。

    @Override
    public boolean onTouch(View v, MotionEvent event) {
    switch (event.getActionMasked()) {
    case MotionEvent.ACTION_UP:
        Log.i(TAG, "ACTION_UP");
        Log.i(TAG, ((TextView) v).getText().toString());
        break;

    case MotionEvent.ACTION_DOWN:
     Log.i(TAG, "ACTION_DOWN");
     Log.i(TAG, ((TextView)v).getText().toString());
     break;
    }

    return true;
}

非常感谢任何帮助。谢谢

最佳答案

您需要处理 LinearLayout 中的所有触摸事件并检查 subview 的位置(child.getLeft() 和 child.getRight())。

public boolean dispatchTouchEvent(MotionEvent event){
    int x = event.getX();
    int cc = getChildCount();
    for(int i = 0; i < cc; ++i){
        View c = getChildView();
        if(x > c.getLeft() && x < c.getRight()){
            return c.onTouchEvent(event);
        }
    }
    return false;
}

关于安卓 : Get view only on which touch was released,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595220/

相关文章:

android - 机器人框架 - Appium 库 : Security Exception while starting the application

java - 如何将 Logo 与操作栏中的左侧尺寸对齐?

android - 如何在android中平滑地拖动 View

java - 具有不同结构的 JSON 文件处理

android - 将录制的音频保存到文件 - OpenSL ES - Android

reactjs - 来自 dnd-kit 的监听器正在干扰输入 :checkbox's onChange event

css - Canvas 上的元素在 Canvas 本身被拖动后跳动

javascript - 在溢出的框中无法通过触摸滚动 : scroll/auto in a draggable box

javascript - 如果 touchmove 触发则取消 touchend

javascript - 检测特殊的 Javascript 触摸事件