Android状态栏与ActionBar重叠

我知道我可以使用requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY)制作ActionBar叠加层
并且可以在我的屏幕中切换/显示状态栏(通过在FLAG_FULLSCREENFLAG_FORCE_NOT_FULLSCREEN之间切换)。
这很好用。 但是,当我切换状态栏时,我不希望我的布局移动。

我知道我可以使用以下内容使状态栏“覆盖”(尽管不透明)内容:

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

这也很好,除了(预期的)后果,当使用ActionBar时,ActionBar被截止一半 – 其中一半基本上在状态栏下。

所以我想知道,在这种情况下,有没有办法通过状态栏的高度“移动ActionBar”?
我知道在更糟糕的情况下,我可以使用位于布局中的自定义视图来执行此操作,但我宁愿不这样做(希望从ActionBar中受益)。

谢谢!

Solutions Collecting From Web of "Android状态栏与ActionBar重叠"

显然,你可以在Jellybean中做到这一点。 谷歌在api文档中包含两个示例。 这是一个链接: http : //developer.android.com/reference/android/view/View.html#setSystemUiVisibility%28int%29

摘要:在视图上使用setSystemUiVisibility来切换可见性(在jellybean +上)。

它并不完美,但这就是我实现你想要的方式:

在onCreate:

getWindow()setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)。

然后:

 private void hideStatusBar() { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); } private void showStatusBar() { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } 

我还对活动有一种风格,具体如下:

   

当状态栏显示时,您的活动将向下移动,但我认为它不太明显。

你为什么不在Manifest中做到这一点

 android:theme="@android:style/Theme.Black.NoTitleBar" 

比没有状态栏和Actionbar更多的空间?

将此方法放在onCreate()方法活动中:

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

参考: 链接