我处境很棘手,希望你能帮助我。我有几个视图(TextViews),在线性布局中一个接一个地水平放置。当我按下textview1时,将我的手指拖到任何其他文本视图并释放触摸,我希望能够获得手指被抬起的视图(textview)。
我浏览了TouchListener api,它说每个事件都以ACTION_DOWN事件动作开始。由于其他文本视图不会触发该事件,我如何获得对我抬起手指的textViews的引用?我甚至尝试过,而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 :(得分:2)
您需要处理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;
}