我在尝试将MediaController定位在我想要的位置时遇到了很多麻烦。
我真正想做的是始终在VideoView上方显示MediaController,与底部对齐。
过去三天我一直试图这样做但没有成功。我已经尝试获取MediaController的高度,但它始终为零,直到它第一次显示在屏幕底部。
我已覆盖MediaController以覆盖setAnchorView,以便VideoView不会覆盖它。
我已经阅读了VideoView和MediaController的源代码,我也尝试使用私有字段的反射来获取MediaController的高度,在第一次显示组件之前也没有成功。
如何在不向用户显示的情况下知道MediaController的高度?
答案 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);