Android在状态栏后面绘制,但不在导航栏后面

问题描述:

我正在研究状态栏完全透明而不是半透明以及导航栏未被触摸的方式。Android在状态栏后面绘制,但不在导航栏后面

最近我可以是使用标志

WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

,但由此得出导航栏后面为好。

背景是什么让这个棘手,它是一个微妙的渐变,并且当我将状态栏颜色设置为渐变的开始时,它看起来几乎是正确的,但在屏幕顶部有一条细微的线。

是否有一种很好的方法可以将活动适合窗口,只在顶部,但如果底部有一个导航栏,请保持独立?

一个很好的方法是从this answer方法一。

要实现完全透明的状态栏,你必须使用 statusBarColor,这是只有在API 21及更高版本。 windowTranslucentStatus在API 19及更高版本中可用,但它为状态栏添加了有色背景。但是,设置 windowTranslucentStatus确实做到一两件事,改变statusBarColor透明不:它集SYSTEM_UI_FLAG_LAYOUT_STABLE和SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 标志。获得相同效果的最简单方法是手动设置这些标记,这样可以有效地禁用Android 版图系统施加的插页,并让您自己保护。

你叫这条线在你onCreate方法:

getWindow().getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

一定要还设置了透明/res/values-v21/styles.xml:

<item name="android:statusBarColor">@android:color/transparent</item> 

或者设置透明度以编程方式:

getWindow().setStatusBarColor(Color.TRANSPARENT); 

这种方法的好处是,相同的布局和设计通过交换透明状态栏 以获得有色半透明状态栏,还可以在API 19上使用。

<item name="android:windowTranslucentStatus">true</item> 

我猜你已经试过这或类似的东西。如果这不起作用,请确保您的根元素是FrameLayout

+1

默认为 android.support.design.widget.CoordinatorLayout 而不是帧布局。这没关系,谢谢 –