我正在使用新的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);
}
由于
答案 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会自动调整视图大小以考虑系统窗口,例如状态栏。