在我的应用程序中,我使用多个表面视图(用于显示视频和谷歌地图),同时显示在屏幕上。 现在我必须添加更改这些视图的配置(位置、大小和可见性)的可能性。切换配置不能停止视频播放,也不能重置地图(我们可以在上面添加kml图层)。
在这个目标中,当我切换配置时,我只需更改在新配置中仍在使用的视图的位置和大小,并隐藏其他视图。
问题是,如果我隐藏一个表面视图(在其容器上使用 setVisibility(View.GONE) ),其位置与新配置中另一个表面视图的位置重叠,则应隐藏的表面视图仍然可见!
例如,我们可以有一个配置,在左侧显示视频,在右侧显示地图,如下所示:
通过单击 1、2、3 或 4 栏按钮,我们可以更改配置(例如,仅包含地图的配置)。视频仍然显示在地图上:
有什么想法吗?我还尝试将隐藏表面视图的宽度和高度设置为 0,但它不起作用(它没有效果,而将尺寸设置为例如 100x100 确实有效)。将表面视图移出屏幕(具有负边距)也不起作用。
编辑:设置负边距适用于星系连接,但在星系选项卡上,表面视图被迫显示在屏幕中。添加标志 FLAG_LAYOUT_NO_LIMITS 可以使负边距起作用,但随后布局会绘制在手机状态栏下方...有任何提示吗?
我也有同样的问题,
我使用
surface.setVisibility(View.GONE)
修复了它,而不是隐藏容器或parentView。