Android YouTubePlayerFragment在折叠工具栏布局中不工作(播放)

Android YouTubePlayerFragment在折叠工具栏布局中不工作(播放),android,youtube-api,android-videoview,android-collapsingtoolbarlayout,Android,Youtube Api,Android Videoview,Android Collapsingtoolbarlayout,YouTubePlayerFragment在折叠工具栏布局中不工作(播放) 我想从youtube android api播放youtube视频。在CollayngToolbarLayout中,YouTubePlayerFragment不播放,只有缩略图出现,1秒钟后停止播放 我认为它在其他布局中工作良好。我想要材料设计与youtube视频折叠布局。请帮帮我 <android.support.design.widget.CoordinatorLayout android:id="

YouTubePlayerFragment在折叠工具栏布局中不工作(播放)

我想从youtube android api播放youtube视频。在CollayngToolbarLayout中,YouTubePlayerFragment不播放,只有缩略图出现,1秒钟后停止播放

我认为它在其他布局中工作良好。我想要材料设计与youtube视频折叠布局。请帮帮我

  <android.support.design.widget.CoordinatorLayout
    android:id="@+id/root_coordinator"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">


    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        android:fitsSystemWindows="true">



        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">




            <!--<ImageView
                android:id="@+id/image"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:src="@drawable/ic_launcher"
                android:visibility="visible"
                app:layout_collapseMode="parallax" />-->
            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/layoutYoutube"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:visibility="visible"
                app:layout_collapseMode="parallax">
                <fragment
                    android:id="@+id/youtube_fragment"
                    android:name="com.google.android.youtube.player.YouTubePlayerFragment"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </LinearLayout>



            <android.support.v7.widget.Toolbar
                android:id="@+id/app_bar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:layout_collapseMode="pin">


                <include
                    layout="@layout/toolbar_layout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

            </android.support.v7.widget.Toolbar>


        </android.support.design.widget.CollapsingToolbarLayout>



    </android.support.design.widget.AppBarLayout>


    <FrameLayout
        android:id="@+id/frameContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="1dp"
        android:background="@android:color/white"
        android:paddingTop="2dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

    </FrameLayout>




</android.support.design.widget.CoordinatorLayout>

android:fitsSystemWindows=“true”>

如果您发布了逻辑代码或java代码以及错误日志,这将非常有用。我发布的java代码,请看看这个可能也适合你

public class YoutubeActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener{

    public static final String API_KEY = "xxxxxxxxxx";
    public static final String VIDEO_ID = "xxxxxxx";

    private YouTubePlayer youTubePlayer;
    private YouTubePlayerFragment youTubePlayerFragment;
    private TextView textVideoLog;
    private Button btnViewFullScreen;

    private static final int RQS_ErrorDialog = 1;

    private MyPlayerStateChangeListener myPlayerStateChangeListener;
    private MyPlaybackEventListener myPlaybackEventListener;

    String log = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_youtube);

        youTubePlayerFragment = (YouTubePlayerFragment)getFragmentManager()
                .findFragmentById(R.id.youtubeplayerfragment);
        youTubePlayerFragment.initialize(API_KEY, this);

        textVideoLog = (TextView)findViewById(R.id.videolog);

        myPlayerStateChangeListener = new MyPlayerStateChangeListener();
        myPlaybackEventListener = new MyPlaybackEventListener();

        btnViewFullScreen = (Button)findViewById(R.id.btnviewfullscreen);
        btnViewFullScreen.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View arg0) {
                youTubePlayer.setFullscreen(true);
            }});
        Button btnPlay = (Button) findViewById(R.id.btnplay);
        btnPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(youTubePlayer.isPlaying())
                    youTubePlayer.pause();
                else
                    youTubePlayer.play();
            }
        });


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_splash_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        Log.e("id", id+"");
        switch(item.getItemId()){
            case R.id.action_share:
                break;
            case 16908332:
                onBackPressed();
                break;
        }
        return super.onOptionsItemSelected(item);
    }


    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youtube, boolean b) {
        youTubePlayer = youtube;
        Toast.makeText(getApplicationContext(), "YouTubePlayer.onInitializationSuccess()", Toast.LENGTH_LONG).show();

        youtube.setPlayerStateChangeListener(myPlayerStateChangeListener);
        youtube.setPlaybackEventListener(myPlaybackEventListener);

        if (!b) {
            youTubePlayer.cueVideo(VIDEO_ID);
        }
    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
        if (youTubeInitializationResult.isUserRecoverableError()) {
            youTubeInitializationResult.getErrorDialog(this, RQS_ErrorDialog).show();
        } else {
            Toast.makeText(this,"YouTubePlayer.onInitializationFailure(): " + youTubeInitializationResult.toString(),Toast.LENGTH_LONG).show();
        }
    }

    private final class MyPlayerStateChangeListener implements YouTubePlayer.PlayerStateChangeListener {

        private void updateLog(String prompt){
            log +=  "MyPlayerStateChangeListener" + "\n" +prompt + "\n\n=====";
            textVideoLog.setText(log);
        };

        @Override
        public void onAdStarted() {
            updateLog("onAdStarted()");
        }

        @Override
        public void onError(
                com.google.android.youtube.player.YouTubePlayer.ErrorReason arg0) {
            updateLog("onError(): " + arg0.toString());
        }

        @Override
        public void onLoaded(String arg0) {
            updateLog("onLoaded(): " + arg0);
        }

        @Override
        public void onLoading() {
            updateLog("onLoading()");
        }

        @Override
        public void onVideoEnded() {
            updateLog("onVideoEnded()");
        }

        @Override
        public void onVideoStarted() {
            updateLog("onVideoStarted()");
        }

    }

    private final class MyPlaybackEventListener implements YouTubePlayer.PlaybackEventListener {

        private void updateLog(String prompt){
            log +=  "MyPlaybackEventListener" + "\n-" +
                    prompt + "\n\n=====";
            textVideoLog.setText(log);
        };

        @Override
        public void onBuffering(boolean arg0) {
            updateLog("onBuffering(): " + String.valueOf(arg0));
        }

        @Override
        public void onPaused() {
            updateLog("onPaused()");
        }

        @Override
        public void onPlaying() {
            updateLog("onPlaying()");
        }

        @Override
        public void onSeekTo(int arg0) {
            updateLog("onSeekTo(): " + String.valueOf(arg0));
        }

        @Override
        public void onStopped() {
            updateLog("onStopped()");
        }

    }
报告说:

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

所以你没办法开始工作了你的替身碎片 折叠工具栏布局中的YouTubePlayerView


附言:如果有人成功做到了,分享解决方案。我也遇到了同样的问题,但我无法解决。

谢谢您的回复,但我想在CollasingToolbarLayout中播放youtube片段。除此之外,它运行良好。但我想使用CollasingToolbarLayout(在上面的问题xml中提到过)的用户,它似乎协调布局会导致错误覆盖。你解决你的问题了吗?@AbhishekV不幸的是,没有。YouTubeView不应该与其他视图重叠。这是唯一有效的解决办法。