【问题标题】:Problems using YouTubePlayerFragment, "the YouTubePlayerView is 0dp wide and 0dp high"使用 YouTubePlayerFragment 时出现问题,“YouTubePlayerView 宽 0dp,高 0dp”
【发布时间】:2016-05-27 10:16:51
【问题描述】:

我真的很难在我的应用程序中使用YouTubePlayerFragment。我的实现如下所示:

private void loadYouTubeVideo(final YouTubeViewHolder h, final Content content) {
        final YouTubePlayerFragment youTubePlayerFragment = YouTubePlayerFragment.newInstance();
        FragmentTransaction transaction = ((DetailActivity) getContext()).getFragmentManager().beginTransaction();
        transaction.add(R.id.fl_youtube, youTubePlayerFragment).commit();
        final ViewTreeObserver observer = h.mRlYouTube.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                youTubePlayerFragment.initialize(YOUTUBE_PLAYER_API_KEY, new YouTubePlayer.OnInitializedListener() {
                    @Override
                    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) {
                        if(!wasRestored) {
                            youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
                            youTubePlayer.loadVideo(content.getVideoId());
                        }
                    }

                    @Override
                    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
                        Log.e(getClass().getSimpleName(), "Error initializing YouTube Video with id ");
                        FragmentTransaction transaction = ((DetailActivity) getContext()).getFragmentManager().beginTransaction();
                        transaction.remove(youTubePlayerFragment);
                    }
                });
            }
        });
    }

初始化没有问题,因为显示了 YouTubePlayer 并加载了视频。但它会在一秒钟后立即停止并显示以下消息:

"YouTube video playback stopped due to the player's view being too small. The YouTubePlayerView is 0dp wide (minimum is 200dp) and 0dp high (minimum is 110dp)."

这是带有FrameLayout 的XML 布局,我在上面的代码中添加了YouTubePlayerFragment

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fl_youtube"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minWidth="200dp"
    android:minHeight="110dp"
    android:layout_marginBottom="5dp"
    >

</FrameLayout>

我不知道为什么 YouTubePlayer 假装宽度和高度为 0。当我记录 FrameLayout 的大小时,它的高度是 607,宽度是 1080 像素。任何想法如何解决这个问题?

【问题讨论】:

  • 我在使用 YouTubePlayerView(不是片段)时也遇到了这个问题。
  • 你找到解决办法了吗?
  • 我在 recyclerview 中使用 Youtube 播放器视图。我也有同样的问题。如果您找到解决方案,请发布答案。
  • 这个问题有什么解决办法吗?

标签: android android-youtube-api


【解决方案1】:

它对我有用:在您的 AndroidManifest.xml 活动描述中添加 android:configChanges="keyboardHidden|orientation|screenSize",如下所示:

<activity android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize">

或者只是

<activity android:name=".MyActivity"
    android:configChanges="orientation">

via

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多