我无法检测 MotionEvent.ACTION_MOVE 和 MotionEvent.ACTION_UP 事件。我打算在您按住时有一个按钮,它会自动减小关联的值,但是由于无法检测到 UP 事件,因此我在编码中还没有达到这一点。
for (int position = 0; position < mListItems.size(); position++) {
LayoutInflater inflater = getLayoutInflater();
PilotSkillRow row = (PilotSkillRow) inflater.inflate(R.layout.pilotskillrow, mSkillListView, false);
Button skillminus = (Button) row.findViewById(R.id.skillminus);
skillminus.setOnTouchListener(new SkillButtonTouchListener(position, false));
....
}
我理解在触摸事件上返回 true 意味着稍后的触摸事件(例如 ACTION_MOVE 和 ACTION_UP)应该触发。
private class SkillButtonTouchListener implements OnTouchListener {
public SkillButtonTouchListener(int pos, boolean plus) {
...
}
public boolean onTouch(View view, MotionEvent motionevent) {
int action = motionevent.getActionMasked();
switch (action)
{
case MotionEvent.ACTION_MOVE:
Log.e("a", "MOVE EVENT");
....
return true;
case MotionEvent.ACTION_UP:
Log.e("a", "UP EVENT");
....
break;
case MotionEvent.ACTION_DOWN:
Log.e("a", "DOWN EVENT");
....
return true;
default:
break;
}
return false;
}
}
但是,当我运行代码时,它甚至会显示 DOWN,但 MOVE 和 UP 事件根本不会显示。这可能与我的布局膨胀有关吗?
有人知道我做错了什么吗?
更新:如果我使用 android 调试器连接到按钮以检查正在发生的事情,则在按下按钮后单步执行时会触发 UP 事件。可能是因为有另一个进程消耗了 UP 事件?
更新 2:问题是膨胀布局内的文本视图拒绝更新。当我在适配器上执行无效事件时,它将停止当前处理的触摸事件(无错误)。我有另一个文本视图,我可以在不需要适配器的情况下手动更新它,这不会导致任何问题。所以这似乎是一个针对RelativeLayout的问题。我有一个解决方法,只在 ACTION_UP 事件期间使数据无效,但我宁愿即时更新 textview。