2011-12-22 3 views
2

Я создаю пользовательский элемент управления Android, расширяющий Галерею. Мне нужен эффект взглядов быть наложены таким образом, я выдаватьAndroid-контроль управления сенсорными событиями не синхронизирован с getChildDrawingOrder

setSpacing(-60); 

После того, как я даю это, у меня есть три иконки в галерее, 1, 3, проведенной первой, а затем 2, который является центром один. Правила такого же определяются в getChildDrawingOrder, а также позволили его

setChildrenDrawingOrderEnabled(true); 

Теперь вопрос мнение все больше втягивается в пути я определил правила в упорядочении. Но события в управлении галереей идут в исходном порядке представления, то есть 1,2,3. Чтобы лучше объяснить,

1 нарисовано, 3 нарисовано и, наконец, 2 нарисовано, и они перекрывают друг друга. Таким образом, представление имеет 50% от 1, 100% от 2 и 50% от третьего представления.

Но когда я касаюсь взглядов, андроид предполагает, что на экране видны 50% 1, 50% 2 и 100% 3. Чтобы уточнить немного больше, после 50% 1 просмотра, если я нажму, 2 будет сосредоточено (как и должно быть, потому что согласно моему правилу рисования 2 находится поверх 1).

Но когда я нажимаю где-нибудь после 50% просмотра 2, фокус переходит в 3, а по порядку чертежа 3 не видно, 100% 2 видимо, но для 50% площади обзора 1, фокус - вид 2.

Помогите нам разобраться со своими мыслями о том, как мы можем решить эту проблему, заставив порядок событий следовать шаблону просмотра на экране?

ответ

0

Вам необходимо вручную пересчитать области касания этих дочерних видов.

Вы, скорее всего, захотите переопределить getHitRect() и вернуть свой собственный объект Rect, границы которого были скорректированы в соответствии с перекрывающимися областями.

Смежные вопросы