gpt4 book ai didi

安卓 : Get view only on which touch was released

转载 作者:行者123 更新时间:2023-11-29 00:31:15 26 4
gpt4 key购买 nike

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

我检查了 TouchListener api,它说每个事件都以 ACTION_DOWN 事件操作开始。由于其他 textviews 不会触发该事件,我如何才能获得对我抬起手指的 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;
}

非常感谢任何帮助。谢谢

最佳答案

您需要在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com