Android视频视图重叠

Android视频视图重叠,android,android-layout,xamarin,android-videoview,xamarin-forms,Android,Android Layout,Xamarin,Android Videoview,Xamarin Forms,我有两个Xamarin表单页面,使用自定义渲染器在每个页面上显示Android视频视图。第1页上的视频(嵌套在RelativeLayout中)成功播放。当我使用Navigation.PushAsync(第2页)从第1页导航到第2页时第1页的视频视图继续与第2页的视频重叠 是否有办法强制VideoView尊重其父视图容器的可见性? Page1.xaml: <?xml version="1.0" encoding="utf-8" ?> <ContentPage xm

我有两个Xamarin表单页面,使用自定义渲染器在每个页面上显示Android视频视图。第1页上的视频(嵌套在RelativeLayout中)成功播放。当我使用
Navigation.PushAsync(第2页)从第1页导航到第2页时第1页的视频视图继续与第2页的视频重叠

是否有办法强制VideoView尊重其父视图容器的可见性?

Page1.xaml:

<?xml version="1.0" encoding="utf-8" ?>
        <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                     x:Class="MyVideoApp.Page1">
        <RelativeLayout>
            <MyVideoView x:Name="vidPlayer" Source="http://...."
                  RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}"
                  RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height}" />
          </RelativeLayout>
        </ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyVideoApp.Page2">

    <MyVideoView x:Name="vidPlayer" Source="http://...." />

</ContentPage>

Page2.xaml:

<?xml version="1.0" encoding="utf-8" ?>
        <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                     x:Class="MyVideoApp.Page1">
        <RelativeLayout>
            <MyVideoView x:Name="vidPlayer" Source="http://...."
                  RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}"
                  RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height}" />
          </RelativeLayout>
        </ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyVideoApp.Page2">

    <MyVideoView x:Name="vidPlayer" Source="http://...." />

</ContentPage>


视频视图是一个
表面视图
表面视图
的Z顺序在连接到窗口之前确定,之后不能更改。因此,您不能同时显示多个
SurfaceView
s,因为
SurfaceView
可以显示任何内容

您可能需要尝试完全删除
视频视图
,然后重新添加,或者,如果所有其他操作都失败,您可以尝试将
视频视图
移出屏幕


我已经尝试在Xamarin表单页面中使用OnAppearing()和Ondisearing()将播放器的可见性设置为false,但没有成功。VideoView.setZOrderMediaOverlay(true)VideoView.setTranslationZ()VideoView.setZOrderOnTop()方法也不能解决这个问题。根据我对SurfaceView的发现,当可见性恢复时,它听起来像是销毁和创建它,但不确定这会是什么样子。有趣的想法。我尝试将其包装在Xamarin Forms框架中,然后在OnDisappear()中将其移除。除了第1页上的所有其他元素和第2页上的内容外,其他所有元素都仍然显示出来。当表单导航尝试在单个活动中分层新屏幕时,它不能像相对布局那样。