Позиционирование MediaController над VideoView

У меня много проблем с попыткой разместить MediaController именно там, где я хочу.

Что я действительно хочу сделать, так это всегда показывать MediaController над VideoView, выровненным по низу.

Я пытался сделать это в течение последних трех дней без успеха. Я пытался получить высоту MediaController, но она всегда равна нулю, пока она не будет показана в первый раз внизу экрана.

Я переопределил MediaController, чтобы переопределить setAnchorView, чтобы VideoView не перезаписывал его.

Я прочитал исходный код как VideoView, так и MediaController, и я также пытался получить высоту MediaController, используя отражение над закрытыми полями, также безуспешно, прежде чем компонент будет показан в первый раз.

Как я могу узнать высоту MediaController, не отображая ее пользователю?


person Henrique Rocha    schedule 08.05.2012    source источник
comment
Элементы управления в нижней части видео — это поведение по умолчанию, не так ли? Можете ли вы поделиться некоторым кодом, так как я думаю, что вы пытаетесь сделать то, чего не должны делать? Вы не можете измерить элементы управления, не показывая их, поскольку они не являются частью какой-либо иерархии представлений (на самом деле то же самое касается любого представления).   -  person Delyan    schedule 08.05.2012
comment
Я отказался от того, что пытался сделать, поскольку невозможно узнать высоту MediaController до его отображения. Я перейду к подходу YouTube, в котором у вас нет MediaController, а отображается только ProgressBar и воспроизведение/пауза при касании.   -  person Henrique Rocha    schedule 10.05.2012


Ответы (1)


Поместите свой вид видео в FrameLayout и установите его высоту на wrap_content, чтобы родитель изменил размер до высоты ребенка (вида видео). Этот шаг имеет решающее значение, поскольку представление MediaController по умолчанию добавляется в нижнюю часть родительского представления видео, если оно привязано к представлению видео. Следовательно, высота родителя должна совпадать с высотой дочернего элемента, чтобы медиаконтроллер был виден в нижней части окна просмотра видео.

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <VideoView
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</FrameLayout>

Затем в своем классе активности используйте следующий код, чтобы добавить медиа-контроллер:

MediaController mediaController = new MediaController(VideoPlayerActivity.this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
person Iffat Fatima    schedule 06.06.2018