半透明导航,无布局显示在状态栏下方

Mil*_*ilo 4 android android-layout

我正在使用新的Android 4.4 FLAG_TRANSLUCENT_NAVIGATION标志来打开半透明屏幕底部的导航栏(背面,主页按钮等).这工作正常,但副作用是我的Activity的布局现在显示在屏幕顶部的状态栏下方(即使我没有将状态栏设置为半透明).我想避免一个hacky修复,即应用填充到布局的顶部.

有没有办法将导航设置为半透明,同时确保状态栏正常显示并且不允许在其下方显示布局?

我使用的代码如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    Window w = getWindow();
    w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Que*_* S. 6

ianhanniballake的答案确实有效,但你不应该使用android:fitsSystemWindows="true"顶层视图.使用此属性如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/colorPrimaryDark">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#ffffff"
        android:fitsSystemWindows="true">

        <!-- Your other views -->

    </LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

如您所见,您必须在顶级视图上设置颜色,并将该属性放在另一个容器上.