Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:仅查看发布触摸屏的位置_Android_Drag_Touch Event_Ontouchlistener_Motionevent - Fatal编程技术网

Android:仅查看发布触摸屏的位置

Android:仅查看发布触摸屏的位置,android,drag,touch-event,ontouchlistener,motionevent,Android,Drag,Touch Event,Ontouchlistener,Motionevent,我的处境很棘手,希望你能帮我。我有几个视图(文本视图),以线性布局一个接一个地水平放置。当我按下textview 1时,将手指拖动到任何其他textview并释放touch,我希望能够获得举起手指的视图(textview) 我看过TouchListener api,它说每个事件都以一个动作开始。既然其他TextView不会触发该事件,那么我如何才能获得对我举起手指的TextView的引用?我甚至尝试过,action\u up只会在触发action\u down事件的textView上启动

我的处境很棘手,希望你能帮我。我有几个视图(文本视图),以线性布局一个接一个地水平放置。当我按下textview 1时,将手指拖动到任何其他textview并释放touch,我希望能够获得举起手指的视图(textview)

我看过TouchListener api,它说每个事件都以一个动作开始。既然其他TextView不会触发该事件,那么我如何才能获得对我举起手指的TextView的引用?我甚至尝试过,action\u up只会在触发action\u 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;
}

非常感谢您的帮助。谢谢

您需要处理线性布局中的所有触摸事件,并检查子视图的位置(child.getLeft()和child.getRight())

公共布尔dispatchTouchEvent(MotionEvent事件){
intx=event.getX();
int cc=getChildCount();
对于(int i=0;ic.getLeft()&&x
尝试获取滚动位置即使我获取了位置点,如何获取包含该点的textview?
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;
}