在Android中,将setZOrderOnTop设置为true的SurfaceView顶部有一个按钮。

5
我有一个应用程序中的两个SurfaceView,其中一个SurfaceView需要覆盖另一个SurfaceView。例如,假设有两个SurfaceView A和SurfaceView B。B需要在A的顶部,这可以通过在B上设置setZOrderOnTop(true)来实现。
现在,我想在B的顶部显示一些文本或按钮,但由于它具有设置为true的Z顺序,添加的文本或按钮不会显示在顶部,而是显示在其下方。如果未设置setZOrderOnTop属性,则文本视图和按钮会显示在顶部,但B就不会覆盖A。
我尝试将SurfaceView B和文本视图或按钮放置在FrameLayout中,但仍然出现在B下方。有没有办法将z顺序设置为true,同时文本或按钮仍然可以显示在其上方?
1个回答

9
我使用 setZOrderMediaOverlay(true) 而不是 setZOrderOnTop 成功解决了问题。
如果将 setZOrderOnTop 方法设置为 true,则视图将始终位于窗口顶部。因此,为了在表面视图上有覆盖视图,应该使用 setZOrderMediaOverlay
有关更多信息,请参阅此处的 setZOrderMediaOverlay 文档

@Piyush,什么时候会使用setZOrderOnTop方法?我有点困惑setZOrderMediaOverlay和setZOrderOnTop之间的区别。文档没有让我理解。 - Shashank Gupta
@ShashankGupta,setZOrderOnTop永远处于顶部,无论你如何配置。而另一个函数setZOrderMediaOverlay则允许在其之上放置按钮。 - Maher Abuthraa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接