将MediaController定位在VideoView上

时间:2012-05-08 15:20:01

标签: android android-videoview mediacontroller

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

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

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

我已覆盖MediaController以覆盖setAnchorView,以便VideoView不会覆盖它。

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

如何在不向用户显示的情况下知道MediaController的高度?

1 个答案:

答案 0 :(得分:0)

将视频视图放在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);