我有一个带有 ItemizedOverlays 的 google MapView。然后我添加一个 imageView(不是 Overlay)并附加到 MapView。如何让 ItemizedOverlays 位于 imageView 之上?我希望 MapView 标记位于顶部。
我知道叠加层的添加顺序决定了叠加层的 z 顺序,但是我如何控制新附加 View 和叠加层的 z 顺序?
最佳答案
MapView 扩展了 ViewGroup,因此我假设 Overlays 是作为 ViewGroup 的子项绘制的。这意味着您应该能够使用 ViewGroup.addView(View child, int index) 插入 ImageView 以使其显示在叠加层下方。
不过,更好的方法是自己扩展 MapView,并尝试覆盖 (a) ViewGroup.getChildAt(int index) 或 (b) ViewGroup.getChildDrawingOrder(int childCount, int i)。取决于 MapView 如何实现其绘制顺序(例如,LinearLayout 的 Z 顺序是它的 subview 顺序)。
对于 (a),请参阅此答案:Sort buttons alphabetically
对于 (b),您还需要通过调用 setChildrenDrawingOrderEnabled(boolean enabled) 来设置绘图顺序。
关于MapView 上 View 的 android z-order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12774398/