Android Z-порядок просмотра на MapView

У меня есть Google MapView с ItemizedOverlays. Затем я добавляю imageView (не Overlay) и присоединяюсь к MapView. Как сделать так, чтобы ItemizedOverlays располагались поверх imageView? Я бы хотел, чтобы маркеры MapView были сверху.

Я понимаю, что порядок добавления наложений определяет z-порядок наложений, но как я могу контролировать z-порядок нового прикрепленного представления вместе с наложениями?


person user1727532    schedule 08.10.2012    source источник


Ответы (1)


MapView расширяет ViewGroup, поэтому я предполагаю, что наложения рисуются как дочерние элементы ViewGroup. Это означает, что вы должны иметь возможность использовать ViewGroup.addView(View child, int index) для вставки ImageView, чтобы он отображался под наложениями.

Однако гораздо лучшим подходом было бы расширить MapView самостоятельно и попытаться переопределить либо (a) ViewGroup.getChildAt(int index), либо (b) ViewGroup.getChildDrawingOrder(int childCount, int i). В зависимости от того, как MapView реализовал свой порядок прорисовки (например, Z-порядок LinearLayout является его дочерним порядком просмотра).

Для (а) см. этот ответ: Сортировать кнопки по алфавиту

Для (b) вам также необходимо включить порядок рисования, вызвав setChildrenDrawingOrderEnabled (логическое значение включено).

person nmw    schedule 08.10.2012