Android大坑之沉浸式StatusBar+actionbar

在开发中,我们经常遇到, 想让Statusbar透明,其中的效果相比大家也都知道, 但这里面的坑太多了啊……. 今天就来总结一下他的各种方法.

1.Status的消失

因为状态栏是在4.4加入的,所以我们在Android4.4以下是没有Statusbar的. 我们做适配也是在这两个系统上做

当状态栏需要设置一个单纯的颜色时:
- 4.4:设置android:windowTranslucateStatus属性,并且手动添加一个和状态栏高度等高的View。
- 5.0及以上:不设置android:windowTranslucateStatus属性,直接设置statusBarColor的色值。
当状态栏需要要在一个图片上透明时
- 4.4:直接设置android:windowTranslucateStatus属性。
- 5.0:不设置,同时设置状态栏颜色透明,并使用另一个属性。

这是在其他地方找到的一个解决的方法, 但是好像我试的还是不行..
http://www.jianshu.com/p/2539ccf2f3dd

2. 如掉ActionBar的方法

1. 可以在styles中自定义新的主题

之后再清单文件中引用即可
  1. java代码中
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

3. 全屏的方法:

1.如果实在API 13 以上

android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"
  1. 在代码中使用
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
  1. requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 尽量不要在setContentView(R.layout.activity_text);之前加这代码,因为setContentView(R.layout.activity_text);在加载布局时会去找ActionBar, 有时候会不显示效果.
  2. 在清单文件中
<item name="android:windowFullscreen">trueitem>
<item name="android:windowNoTitle">trueitem>

5. 动态全屏变到非全屏

这是从网上无意间看到的, 具体我也没怎么去试下…

this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

你可能感兴趣的:(Android学习)