我有一个自定义视图,我称之为“Node”,它是一个名为“NodeGrid”的自定义 ViewGroup 的子视图。“NodeGrid”类更具体地扩展了RelativeLayout。
我的自定义视图类(“节点”)中有以下代码片段:
private boolean isBeingDragged = false;
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
isBeingDragged = true;
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
isBeingDragged = false;
}
else if (event.getAction() == MotionEvent.ACTION_MOVE)
{
if (isBeingDragged)
{
float xPosition = event.getX();
float yPosition = event.getY();
//change the x and y position here
}
}
return false;
}
问题:
在此代码中设置断点后,似乎仅针对MotionEvent.ACTION_DOWN情况调用onTouchEvent,但对于其他两种情况(“动作向上”或“动作移动”)均未调用。有谁知道可能导致这种情况发生的任何事情?
另外(可能相关):
视图如何添加到 ViewGroup 中是否重要?我注意到除了“addView”之外,还有其他方法可以将子项添加到 ViewGroup,例如“addFocusables”和“addTouchables”。现在我只是使用“addView”将子视图添加到 ViewGroup。