我在片段中使用YouTubePlayer(Android api for android) 我正在使用YouTube播放器为LinearLayout充气:
fragmentManager = getActivity().getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
player = new YouTubePlayerSupportFragment();
fragmentTransaction.add(R.id.youTubePlayerContainer, player);
fragmentTransaction.commit();
... youTubePlayerContainer是膨胀的LinearLayout
正确检测到播放器,开始播放并在第二站停止播放。 日志显示以下内容:
YouTube video playback stopped due to unauthorized overlay on top of player.
The YouTubePlayerView is obscured by android.widget.FrameLayout@4110d1f8.
YouTubePlayerView is completely covered, with the distance in px between each edge of the obscuring view and the YouTubePlayerView being: left: 484, top: 100, right: 100, bottom: 170..
这是我的XML: (其中没有FrameLayout)
<LinearLayout
android:id="@+id/curtain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/withApi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/youTubePlayerContainer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_margin="30dp"
android:layout_weight="1"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:background="@color/trans_popUp"
android:padding="3dp" >
<TextView
android:id="@+id/textYouTubeVisor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title..."
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
我尝试更改边距但没有成功。 我阅读了官方文档但没有成功 表示导致问题的FrameLayout是:android.widget.FrameLayout @ 4110d1f8 但是这样的引用并没有确定哪个引用
对于他这样做的人?
我感谢任何帮助。
此致
答案 0 :(得分:15)
你能解决这个问题吗?
我今天遇到了同样的问题,对我来说,日志中的错误是:
W/YouTubeAndroidPlayerAPI﹕ YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is not contained inside its ancestor com.google.android.youtube.player.YouTubePlayerView{42686bc8 V.E..... ........ 0,0-1200,675 #7f0a00a0 app:id/video_player}. The distances between the ancestor's edges and that of the YouTubePlayerView is: left: -10, top: -10, right: -10, bottom: -10 (these should all be positive).
我通过删除布局中YouTubePlayerView中的填充来修复此问题。所以我的布局看起来像这样:
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/video_player"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000" />
答案 1 :(得分:4)
问题仅在于布局,YouTube Player
不允许任何视图停留在它上面,既不可见也不透明。
为了在您的设备中显示此内容,请在开发者选项中启用布局边界。(警告paddings
和margins
)
尝试在布局上注释掉其他观看次数的代码并再次测试。
答案 2 :(得分:4)
我有同样的错误。 虽然我做了XML更改,但我仍然收到错误:
YouTube video playback stopped due to unauthorized overlay on top of player. The YouTubePlayerView is obscured by android.view.View{59fa6ce V.ED..... ........ 0,0-1440,84 #102002f android:id/statusBarBackground}. The view is inside the YouTubePlayerView, with the distance in px between each edge of the obscuring view and the YouTubePlayerView being: left: 0, top: 0, right: 0, bottom: 2308..
设置好FULLSCREEN之后,它完美无缺
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
希望它能帮助别人。
答案 3 :(得分:2)
Android API的演示代码使用此布局进行Fragment演示,也许可以 让想法得以实现。查看此页面:https://developers.google.com/youtube/android/player/
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:textAppearance="@android:style/TextAppearance.Small"
android:gravity="center"
android:text="@string/playerfragment_text"/>
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:id="@+id/youtube_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
答案 4 :(得分:2)
Youtube播放器找出一些覆盖它的视图。只需为它们删除那些视图或setVisible(View.GONE)。 请查看此链接以获取更多信息 Solution
答案 5 :(得分:1)
您必须在视频视图中删除任何填充属性。
错:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/youtube_player"
android:layout_width="match_parent"
android:layout_height="match_parent"
**android:padding="10dp"** />
</LinearLayout>
右:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/youtube_player"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
答案 6 :(得分:0)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/id_base_layout"
android:fitsSystemWindows="true"
android:layout_height="match_parent"
android:background="#000000">
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/youtube_view"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content" />
1.add fitSystemWindows。 2.getWindow()。addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
答案 7 :(得分:0)
我在youtubeplayer中播放视频时遇到了同样的问题
当我添加此行时...对我有用
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);