2016-01-31 114 views
2

我在Xamarin Forms中有兩頁使用自定義渲染器在每個頁面上顯示Android VideoView。第1頁上的視頻(嵌套在RelativeLayout內)成功播放。當我使用Navigation.PushAsync(Page2);從第1頁導航到第2頁時,Page1中的VideoView繼續與第2頁上的視頻重疊。Android VideoView重疊

有沒有辦法強制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> 

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.Page2"> 

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

</ContentPage> 
+0

我已經嘗試使用OnAppearing()和OnDisapearing()在Xamarin窗體頁面瀏覽到第二頁,但沒有成功,當玩家的知名度,設置爲false。 VideoView.setZOrderMediaOverlay(true)VideoView.setTranslationZ() VideoView.setZOrderOnTop()方法也不能解決問題。 – Adam

+0

基於我發現的關於SurfaceView,聽起來像是在能見度回來時摧毀和創建它,這將是要走的路,但不知道這完全是什麼樣子。 – Adam

回答

0

VideoViewSurfaceViewSurfaceView小號Z-次序被附着到窗口前被確定之後不能更改。所以你不能有多個SurfaceView s同時顯示,因爲SurfaceView種類通過任何和所有東西顯示。

您可能需要嘗試完全刪除VideoView並稍後重新添加它,或者如果其他所有操作都失敗,則可以嘗試將VideoView移出屏幕。

Source

+0

有趣的想法。我嘗試將它包裝在Xamarin Forms框架中,然後在OnDisappear()中將其刪除。除第1頁上的所有其他元素外,第1頁中的所有其他元素仍在顯示,這些工作仍在顯示。表單導航在嘗試在單個活動中分層顯示新屏幕時,不能像相對佈局那樣。 – Adam