36

次のように設定された 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();
    }
});

これはうまく機能し、コントローラーは常にオンのままですが、ビデオを配置する場所を計算するときにコントローラーの高さは考慮されません (垂直方向に中央に配置されるため)。

私の2つの質問は次のとおりです。

  1. VideoView を親の高さと一致させながら、縦横比を維持するにはどうすればよいですか?
  2. VideoView にコントローラーの高さを考慮させるにはどうすればよいですか?

ありがとう。

4

12 に答える 12

18

この問題をレイアウトで解決しました。隅にピン留めしたときはうまくいったようですが、ビデオが歪んでしまいました。テストするために、相対レイアウトの背景を #990000 に変更して、赤が突き抜けているのを確認しました。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/relative_parent"
    android:background="#000000">
    <VideoView
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:id="@+id/videoView" />
</RelativeLayout>
于 2015-07-30T21:01:08.903 に答える
-3

Videoview ウィジェットを RelativeLayout に配置するだけです (変更は xml ファイルのみ)。

ここに参考回答リンクがあります

于 2020-04-29T05:36:30.740 に答える