У меня есть пользовательское представление, которое я называю «Node», которое является дочерним элементом пользовательской ViewGroup, называемой «NodeGrid».Класс «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;
}
Проблема:
После установки точек останова в этом коде создается впечатление, что onTouchEvent вызывается только для случая MotionEvent.ACTION_DOWN , но не для двух других случаев («действие вверх»)или «действие движется»).Кто-нибудь знает что-нибудь из рук вон, что может быть причиной этого?
Также (может быть связано):
Имеет ли значение как представление добавляется кViewGroup?Я заметил, что в дополнение к «addView» есть и другие методы для добавления детей в ViewGroup, такие как «addFocusables» и «addTouchables».Прямо сейчас я просто добавляю дочерний вид в ViewGroup, используя «addView».