3

我在尝试将 MediaController 放置在我想要的位置时遇到了很多麻烦。

我真正想做的是始终在 VideoView 上方显示 MediaController,与底部对齐。

在过去的三天里,我一直在尝试这样做,但没有成功。我尝试获取 MediaController 的高度,但它始终为零,直到它第一次显示在屏幕底部。

我已经覆盖了 MediaController 来覆盖 setAnchorView 以便 VideoView 不会覆盖它。

我已经阅读了 VideoView 和 MediaController 的源代码,并且我还尝试使用私有字段上的反射来获取 MediaController 的高度,但在第一次显示组件之前也没有成功。

我如何知道 MediaController 的高度而不显示给用户?

4

1 回答 1

0

将您的视频视图放入 aFrameLayout并将其高度设置为,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);
于 2018-06-06T15:04:35.043 回答