我有一个VideoView,设置如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/player"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<VideoView
android:id="@+id/video"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_centerVertical="true" />
<ProgressBar
android:id="@+id/loader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
然而,VideoView会自适应父容器的宽度,并根据载入视频的纵横比例设置高度。
我希望做的恰好相反,也就是让VideoView与父容器的高度相同,同时保持纵横比例不变,因此视频将被剪裁在两侧。
我尝试将VideoView拉伸以填充父容器,但这样会破坏纵横比例。
另外一件事是,我要像这样将MediaController添加到VideoView中:
MediaController controllers = new MediaController(this) {
@Override
public void hide() {
if (state != State.Hidden) {
this.show();
}
else {
super.hide();
}
}
};
controllers.setAnchorView(videoView);
videoView.setMediaController(controllers);
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
controllers.show();
}
});
这个方法很好用,控制器总是保持开启状态,但在计算视频位置时没有考虑到控制器的高度(因为它垂直居中)。
那么我的两个问题是:
- 如何使VideoView适应父容器的高度但保持纵横比?
- 如何让VideoView考虑其控制器的高度?
谢谢。
layout_height
设置为match_parent
。解决方法是将其设置为wrap_content
并给父元素设置黑色背景。此外,还要使VideoView在其父元素中垂直居中。 - Abdelalim Hassounamatch_parent
,并且设置android:scaleType="fitXY"
,这样你就可以按照你的要求得到结果。 - Prince Dholakiya