SurfaceView 在 Android 8.0 上与另一个 SurfaceView 重叠

SurfaceView overlaps another SurfaceView on Android 8.0

我的应用程序在 Android 8.0 上遇到了一些奇怪的问题。我有自己的可滚动小部件,代码是 available on github。它有两个child,可以无限滚动一个一个。

在屏幕上,棋盘是一个SurfaceView,一个可滚动移动child上面有棋子也是一个SurfaceView。另一个 child 可滚动视图是简单的 LinearLayout。

问题是当 child SurfaceView 放置在棋盘下方时,它显示在棋盘上方,而另一个 child 正常滚动。看下面的动图。

问题出现在Android 8。在所有以前的版本上它工作正常。

您可以尝试将 SurfaceView 置于屏幕顶部:

surfaceView.setZOrderMediaOverlay(true);

主要提示是不要使用 setZOrderOnTop(true),因为它会在任何 UI 元素上方显示 SurfaceViewsetZOrderMediaOverlay 在 UI 下方显示 SurfaceView,但在另一个 SurfaceView 上方。

More from here