我有一个使用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>
在视图持有人中:
MyViewHolder(View itemLayoutView) {
super(itemLayoutView);
..........
myVideoView = itemLayoutView.findViewById(R.id.video_view);
..........
}
开始视频播放的代码:
..........
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);
..........
对于列表,我使用RecyclerView
。
答案 0 :(得分:0)
这确实是ListView
和RecyclerView
的已知行为,因为这些东西只会加载用户可见的视图,因为用户无法在滚动时到达控件,因此它们会冻结或者可能他们住在同一个地方
我的建议是覆盖setOnScrollListener
的{{1}},但RecyclerView
具体我不知道究竟是怎么回事。
我希望这会有所帮助
答案 1 :(得分:0)
这确实是与先生建议的RecyclerView行为相关的问题。 pouya 如果你在recyler适配器中设置了一个滚动器,那么如果这不起作用,那么在你的活动中的方法或同一个srcollistenr的片段中使用recyler视图方法,那么只需添加&amp;将videoView包装在cardview内的FrameLayout中,并参考以下链接以获取进一步说明
https://stackoverflow.com/a/24529711/9287163
注意:请向我们提供您的卡片视图布局XML文件和设置媒体控制器的代码。