MapView 上 View 的 android z-order

标签 android android-layout z-order

我有一个带有 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/

相关文章:

java - 如何编写 "to the power"和一些文本,如 Java 或 Android 中所示?

android - Android 中字体的物理大小(以磅为单位)

wpf - WPF 网格中的 ZOrder 行为?

java - Android:抽屉导航 Z 索引不正确

android - 当我从另一个 fragment 返回到它时,如何使 fragment 与我离开它时的方式完全相同?

javascript - 在 Nexus Player、Android Cordova 应用程序上打开虚拟键盘时键入第一个字符

android - 如何将约束布局转换为相对布局?

android - 表格布局间距问题

android - 如何调整 NavigationView 中 Icon 和 Title 之间的间距?

android - 共享元素转换(前景/背景)问题