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

时间:2013-12-13 02:05:13

标签: android android-layout

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

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

我使用的代码如下:

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

由于

2 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分:1)

android:fitsSystemWindows="true"添加到您的顶级视图 - android:fitsSystemWindows会自动调整视图大小以考虑系统窗口,例如状态栏。