在 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.
我在一个应用程序中有两个表面视图,一个表面视图需要与另一个表面视图重叠。例如,假设有两个表面视图 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.