我有一个带有 SurfaceView 和 MapView 的应用程序。它们显示在单个视图中,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="XXXXXXXXredactedXXXXXXXXXXXXx"
/>
<class.that.extends.SurfaceView
android:id="@+id/surfaceview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00000000"
/>
</RelativeLayout>
请注意,MapView 位于 SurfaceView 之前。正因为如此,MapView 被绘制在 SurfaceView 的“下方”,而我看到的只是黑色背景,而我在 SurfaceView 上绘制的东西则显示出来。如果我交换顺序,并将 SurfaceView 首先放在文件中,然后将 MapView 放在第二位,则会绘制 MapView,而 SurfaceView 则不显示。
表面是 Z 顺序的,因此它位于持有其 SurfaceView 的窗口后面;SurfaceView 在其窗口中打了一个孔以显示其表面。视图层次结构将负责正确地将 SurfaceView 的任何兄弟姐妹与 Surface 合成,这些兄弟通常会出现在它的顶部。
对我来说,这意味着我应该能够将 SurfaceView 放在文件中的第一位,并让它“穿透” MapView 并显示它的内容。但是,实际上,它们似乎是两种视图,一次只能看到一个。
经过思考:我尝试将背景设置为#00000000,以便背景的alpha为零(即透明),但它没有任何效果。