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 файл и код формата карты, где вы устанавливаете медиа-контроллер.