Android statusbar overlay with ActionBar

风格不统一 提交于 2020-01-01 01:17:11

问题


I know that I can make the ActionBar overlay using requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY)
and can toggle/show the status bar in my screen (by switching between FLAG_FULLSCREEN and FLAG_FORCE_NOT_FULLSCREEN).
This works great. However, I don't want my layout moving when I toggle the status bar.

I know that I can make the status bar "overlay" (albeit not transparently) the content using:

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

This works also great, except for the (expected) consequence that, when using an ActionBar, the ActionBar gets half cut off - half of it is under the status bar basically.

So I am wondering, is there a way to "move the ActionBar down" by the status bar's height in this case?
I know that in worse case, I can do this with a custom view that lives within the layout, but I rather not do this (want to benefit from the ActionBar).

thanks!


回答1:


so apparently, you can do this in Jellybean. google includes two examples in the api docs. here is a link: http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility%28int%29

summary: use setSystemUiVisibility on a view to toggle visibility (on jellybean+).




回答2:


It's not perfect, but this is how I have achieved what you want:

In onCreate:

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

Then:

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);

}

I also have a style on the activity with the following:

 <style name="readingStyle" parent="@style/Theme.Sherlock">
     <item name="android:windowActionBarOverlay">true</item>  
     <item name="windowActionBarOverlay">true</item>       
 </style> 

Your activity will shift down when the status bar shows, but I don't think it's too noticeable.




回答3:


Why you dont make it in the Manifest

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

than you have no statusbar and more space for the Actionbar??




回答4:


Put this method in onCreate() method activity:

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

refer: link



来源:https://stackoverflow.com/questions/10444153/android-statusbar-overlay-with-actionbar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!