Представления в ViewGroup - PullRequest
       1

Представления в ViewGroup

1 голос
/ 01 февраля 2011

У меня следующий сценарий.У меня есть видовая группа и два вида (один рисует прямую форму, овальный - другой).Группа представлений и два представления реализуют интерфейс OnTouchListener.Но при касании представления вызываются и Viewgroup.onTouch (..), и RectView.onTouch () и OvalView.onTouch ().Мой вопрос ... если я хочу знать, какой взгляд был затронут, что мне нужно сделать?Не могли бы вы предоставить мне некоторую информацию или пример?

Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

Вы можете просто получить идентификатор вида, который получил сенсорное событие.

public boolean onTouch(View v, MotionEvent event) {
        v.getId();
}

Вы можете установить идентификаторы ваших представлений в xml или с помощью метода setId ().

0 голосов
/ 01 февраля 2011

Хорошо, давайте посмотрим на OnTouchListener .

Вы видите, что onTouch (View, MotionEvent) возвращает логическое значение, если оно использовало событие.Таким образом, имея это в виду, вы, вероятно, захотите немного подсчитать и посмотреть, содержит ли ваш RectView или OvalView событие touch (используйте MotionEvent, чтобы получить координаты X, Y).Если он действительно есть, верните true, чтобы указать, что представление использовало событие touch.

Теперь мне не совсем ясно, в каком порядке вызывается каждый onTouch (), но я предполагаю, что он сначала вызывает дочерние представленияи, если это дочернее представление вернуло false, оно будет продолжать вызывать остальные методы onTouch ().

Если важно различать, были ли затронуты RectView или OvalView (например, оба могут быть теоретически затронуты одновременно)вам придется проделать какую-то дополнительную работу, чтобы увидеть, какую из них вы предпочитаете принять (возможно, одна нарисована поверх другой).

...