Android Media Controller застрял в позиции при прокрутке списка?
У меня есть список карт, использующих Recycler View для 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
.
Ответы
Ответ 1
это действительно известное поведение с ListView
и RecyclerView
, и потому, что эти вещи загружают только те виды, которые видны пользователю, и поскольку пользователь не может связаться с элементами управления в прокрутке, чтобы они замерзли или, может быть, они оставались в одном и том же место
Мое предложение для вас - переопределить setOnScrollListener
для вашего RecyclerView
, но для VideoView
я конкретно не знаю, как именно.
Я надеюсь, что это поможет
Ответ 2
Это действительно проблема, связанная с поведением RecyclerView, предложенным Mr. pouya, если вы установили scrollistner в адаптере recyler, затем переопределите метод в вашей активности или фрагмент одного и того же srcollistenr с помощью метода просмотра recyler, если это не работает. Просто добавьте и оберните videoView в FrameLayout внутри вашего вида карты и обратитесь к следующей ссылке для дальнейшей инструкции
fooobar.com/info/111522/...
Примечание. Пожалуйста, предоставьте нам XML файл и код формата карты, где вы устанавливаете медиа-контроллер.