ナビゲーション バー (ICS のソフト ナビゲーション キー) の後ろに隠れている mediacontroller に問題があります。最初は問題ありませんが (最初の画像)、ナビゲーション バーが初めて非表示になると、mediacontroller は画面に合わせてサイズ変更されますが (正しい)、ナビゲーション バーが再び表示されたときにサイズが元に戻りません (2 番目の画像)。また、広告は後ろに移動されます (スクリーンショットのために非表示)。
ドキュメントの正しい適合を理解していれば、 SystemWindowsがサイズ変更を担当する必要があります。しかし、それは機能していません。
どうやってやるの?助けてくれてありがとう。
これをGalaxy Nexusでテストしています。
XML レイアウト:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playerLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:animateLayoutChanges="true"
android:background="@color/black" >
<mynamespace.BKDVideoView
android:id="@+id/videoview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<mynamespace.SubtitleTextView
android:id="@+id/subtitleText"
style="@style/SubtitleOverlayText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_marginBottom="30dp"
android:gravity="center"
android:visibility="gone"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
<FrameLayout
android:id="@+id/adLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
<FrameLayout
android:id="@+id/videoMediaControllerHolder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"/>
BKDVideoView は、いくつかのカスタマイズを加えた VideoView の GrepCode からのコピーです。MediaController についても同じことを行いました。MediaController では、次のように非表示を呼び出しています。
int newVis = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_LAYOUT_STABLE;
if (!visible)
{
newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
// mSystemUiHolder -> FrameLayout (playerLayout)
mSystemUiHolder.setSystemUiVisibility(newVis);
更新:同じ問題がある場合は、受け入れられた回答のコメントも確認してください。フルスクリーンにする必要があるビューには、sammyboy コードを使用します。両方に感謝します。申し訳ありませんが、これを理解するのに時間がかかりすぎて、ポイントを与えることができませんでした:(