我有一个名为ScreensActivity
的活动,该活动包含一个GridLayout
。
每个GridLayout
子级都是一个名为View
的自定义ScreenView
。ScreenView
由SurfaceView
组成,用于播放.MP4文件中的视频。
这是上述组件的视图层次结构:
ScreensActivity
GridLayout
ScreenView
ScreenView
ScreenView
ScreenView
...
预期行为
我想做的是通过消失(使用
ScreenView
)其余GridLayout
的内容来添加支持,以将setVisibility(GONE)
中的ScreenView
的“状态”更改为“全屏”。 ,因此它将填充整个GridLayout
。一次只能有一个
ScreenView
处于“全屏状态”当前行为
当前,这仅在尝试更改
ScreenView
中的第一个GridLayout
的“状态”时起作用(这是预期的行为)。尝试从第二个
ScreenView
更改“状态”,依此类推,我遇到以下奇怪的行为(请参见下面示例的visual GIF):将
ScreenView
的“状态”更改为“全屏”时,它会被其他ScreenView
覆盖,例如:当将第二个
ScreenView
“状态”更改为“全屏”时,第一个ScreenView
会将其覆盖。将第三个
ScreenView
“状态”更改为“全屏”时,第一个和第二个“屏幕”都会覆盖他,依此类推。依此类推,直到将第9个
ScreenView
的“状态”更改为“全屏”,之前的所有ScreenView
都将其覆盖。重要的提示
例如,当我用
SurfaceView
替换ScreenView
(在TextView
内部)时,将ScreenView
的“状态”更改为“全屏”会按预期执行,因此似乎产生此问题的有问题的组件奇怪的行为是SurfaceView
组成的ScreenView
。让我知道添加源代码是否可以帮助您解决我的问题。
非常感谢您的帮助。
最佳答案
我通过用TextureView替换SurfaceView
来弄清楚它的行为,该行为与我期望的行为完全相同。