2013-03-24 53 views
2

我处于棘手的状况,希望你能帮助我。我有几个视图(TextViews),以线性布局一个接一个地水平放置。当我按下textview1时,将手指拖到任何其他文本视图并释放触摸,我希望能够获得手指抬起的视图(textview)。Android:只查看发布的触摸

我翻过了TouchListener api,它说每个事件都以一个ACTION_DOWN事件动作开始。由于其他文字浏览不会触发该事件,因此如何才能获得对我提起手指的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; 
} 

任何帮助,非常感谢。谢谢

+0

尝试获取滚动位置 – 2013-03-24 05:08:33

+0

即使我得到位置点,我将如何获取包含该点的textview? – Farhan 2013-03-24 05:46:58

回答

1

您需要处理LinearLayout中的所有触摸事件并检查子视图(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; 
} 
+0

谢谢Alex。它对我很好:) – Farhan 2013-03-24 10:25:52