18

我正在使用 YouTube Android Player API,并希望在 a 顶部覆盖一个视图YouTubePlayerFragment,以便在播放视频上方显示上下文信息和控件。

不幸的是,在布局层次结构中播放器上方有一个或多个视图时,YouTubePlayerFragment播放似乎无法正常工作。YouTubePlayerView播放时间不到半秒,然后立即暂停。

该问题可以通过使用 SDK 附带的 Simple PlayerFragment 演示的以下布局来重现:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <fragment
      android:name="com.google.android.youtube.player.YouTubePlayerFragment"
      android:id="@+id/youtube_fragment"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>

  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textAppearance="@android:style/TextAppearance.Small"
      android:layout_alignParentTop="true"
      android:text="@string/playerfragment_text"/>

</RelativeLayout>

我已经尝试了使用这两种布局的各种布局配置FrameLayoutRelativeLayout但问题总是一样的。我意识到这个 API 已作为“实验性”发布,但如果这是一个已知问题,它对于许多实现来说是一个相当大的障碍。有没有人有好的解决方案或解决方法?

4

5 回答 5

16

杰夫 - 这按设计工作。不支持在我们的任何 YouTube 播放器(包括 YouTube Android 播放器)上叠加。当检测到覆盖时,播放停止并且日志包含有助于调试问题的信息。我们确实支持操作栏覆盖,请查看此演示以了解更多信息:https ://developers.google.com/youtube/android/player/sample-applications#Overlay_ActionBar_Demo 。

于 2012-12-24T01:07:36.993 回答
4

Youtube Player 不允许任何视图覆盖它。只需使用 setVisibility(View.GONE) 为所有视图覆盖它。

于 2014-02-11T03:21:13.537 回答
3

不能按照 Google 的规定在播放器上方添加按钮作为叠加层,否则播放器将停止:

https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView

请注意,在播放视频时,此视图的最小尺寸为 200x110 dp。如果您将视图缩小,视频将自动停止播放。此外,在播放视频时,不允许将视图与其他视图重叠。

此视图不支持填充。要达到相同的效果,请将视图包装在另一个 ViewGroup 中或为其设置边距。

YouTubePlayer 也不支持填充。

为了在视频上叠加您的视图,我建议您使用ExoPlayer,它不是 android sdk 的一部分,但由 google 推荐并包含在 android 开发人员文档中:

http://google.github.io/ExoPlayer/

值得一提的是,在 youtube 应用程序中使用了 Exoplayer。

于 2015-09-12T15:13:29.647 回答
0

您可以将播放器主题设置为 YouTubePlayer.PlayerStyle.CHROMELESS,然后在下面实现您自己的控件。

我遇到了一个问题,我找不到关于如何使用自定义布局重新实现搜索栏的好资源。

于 2014-02-23T23:02:10.337 回答
0

沃拉!!我有一个场景,这个问题出现在设备棒棒糖及更高版本中,这是因为状态栏。我隐藏状态栏问题解决了。只是把它写成一个答案,以防它帮助别人:)

于 2017-06-02T09:42:55.347 回答