在列表视图中滚动时Android Media Controller卡在某个位置?

pcj*_*pcj 14 android android-videoview android-recyclerview

我有一个使用Recycler View of android的卡片列表.我正在显示一些文字及其下方的视频视图.

该列表滚动顺利,播放视频流畅,直到我使用setMediaControll()启用控件.

当我向上/向下滚动列表时启用此视频媒体控件后,即使视频视图随列表视图滚动移动一起自由移动,控件也会保持在相同位置.

这些控件应与列表视图一起移动,并保持静止.可能是什么导致了这个?这是预期的平台行为吗?

更新代码:

布局:

<FrameLayout
                    android:layout_centerHorizontal="true"
                    android:layout_centerInParent="true"
                    android:layout_gravity="center_horizontal"
                    android:id="@+id/frame_layout_video_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <VideoView
                        android:id="@+id/video_view"
                        android:layout_width="360sp"
                        android:layout_height="225sp"
                        android:layout_gravity="center" />

                    <ImageView
                        android:id="@+id/image_button_play"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical|center_horizontal"
                        android:contentDescription="play_pause_button"
                        app:srcCompat="@drawable/ic_play_circle_filled_white_24px" />

                    <ProgressBar
                        android:id="@+id/progressbar_video"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical|center_horizontal"
                        android:visibility="gone" />

                </FrameLayout>
Run Code Online (Sandbox Code Playgroud)

在视图持有人:

MyViewHolder(View itemLayoutView) {
            super(itemLayoutView);
..........
myVideoView = itemLayoutView.findViewById(R.id.video_view);
..........
}
Run Code Online (Sandbox Code Playgroud)

开始视频播放的代码:

    ..........
    Uri uri = Uri.parse(url);
            holder.myVideoView.setVideoURI(uri);
            MediaController fsm = new MediaController(mContext,finalistFragment , url, holder.myVideoView);
            fsm.setAnchorView(holder.myVideoView);
            holder.myVideoView.setMediaController(fsm);
..........
Run Code Online (Sandbox Code Playgroud)

对于列表,我正在使用RecyclerView.

pou*_*uya 0

ListView这确实是和的已知行为,RecyclerView因为这些东西只加载用户可见的视图,并且由于用户无法到达滚动控件,因此它们会冻结或可能停留在同一位置

我对你的建议是覆盖setOnScrollListener你的RecyclerView,但VideoView具体来说我不知道​​具体如何。

我希望这有帮助