我知道我可以使用requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY)
制作ActionBar叠加层
并且可以在我的屏幕中切换/显示状态栏(通过在FLAG_FULLSCREEN
和FLAG_FORCE_NOT_FULLSCREEN
之间切换。)
这非常有效。但是,当我切换状态栏时,我不希望我的布局移动。
我知道我可以使用以下内容对状态栏进行“覆盖”(尽管不透明):
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
这也很好,除了(预期的)后果,当使用ActionBar时,ActionBar被截止一半 - 其中一半基本上处于状态栏之下。
所以我想知道,在这种情况下,有没有办法通过状态栏的高度“将ActionBar向下移动”? 我知道在更糟糕的情况下,我可以使用布局中的自定义视图来执行此操作,但我不想这样做(希望从ActionBar中受益)。
谢谢!
答案 0 :(得分:4)
摘要:
在视图上使用setSystemUiVisibility
来切换可见性(在jellybean +上)。
答案 1 :(得分:3)
这并不完美,但这就是我达到你想要的目标:
on 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);
}
我还在活动上有一个样式,其中包含以下内容:
<style name="readingStyle" parent="@style/Theme.Sherlock">
<item name="android:windowActionBarOverlay">true</item>
<item name="windowActionBarOverlay">true</item>
</style>
状态栏显示时,您的活动会降低,但我认为这不太明显。
答案 2 :(得分:0)
为什么你不在Manifest中做到这一点
android:theme="@android:style/Theme.Black.NoTitleBar"
比没有状态栏和操作栏的空间更多?
答案 3 :(得分:0)
将此方法放在onCreate()方法活动中:
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
参考:link