在 Android 中将 setZOrderOnTop 设置为 true 的 SurfaceView 顶部的按钮

Button on top of SurfaceView with setZOrderOnTop set to true in Android

我在一个应用程序中有两个表面视图,一个表面视图需要与另一个表面视图重叠。例如,假设有两个表面视图 SurfaceView A 和 SurfaceView B。B 需要位于 A 之上,这是通过在 B 上设置 setZOrderOnTop(true) 来实现的。

现在,我想在 B 的顶部显示一些文本或按钮,但因为它的 Z 顺序设置为 true,所以添加的文本或按钮不会显示在顶部,而是显示在其下方。如果未设置 setZOrderOnTop 属性,则文本视图和按钮会显示在顶部,但 B 不会与 A 重叠。

我已经尝试将 SurfaceView B 和 textview 或按钮放在 FrameLayout 中,但它仍然出现在 B 下。有没有一种方法可以将 z order 设置为 true 并且文本或按钮仍然可以出现在它上面?

我使用 setZOrderMediaOverlay(true) 而不是 setZOrderOnTop 解决了这个问题。

如果设置为 true,方法 setZOrderOnTop 将始终位于 window 之上。因此,为了在表面视图上叠加视图,应该使用 setZOrderMediaOverlay

有关详细信息,请参阅 setZOrderMediaOverlay document here.