Android 从 4.4(KitKat) 开始提供了一个视觉上的提升,让最上方的状态栏 (Status Bar) 以及最下方的导航栏 (Navigation Bar) 可以被透明化,并让 APP 的内容可以往上下延伸,使整个画面的可被利用度大幅提升。
在你的BaseActivity里使用这两段代码可以做到沉浸式状态栏效果
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
//使状态栏透明
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//使导航栏透明getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
特别注意
使导航栏透明时,一些底部透明的机型可能会出现下面的情况
底部有一部分内容在虚拟按键之下,如不需要去掉导航栏透明代码即可。
现在我在用的方法是新建一个values-v19文件夹,只要Android版本高于4.4便能够实现沉浸式状态栏,同样也要注意navigation的属性
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- API 19 theme customizations can go here. -->
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
还有一些什么蛋疼的事
布局里如果没有写这两段代码 app的内容就会和状态栏叠加在一起
android:clipToPadding="false"
android:fitsSystemWindows="true"
但是如果你写了
你的顶部布局就会扁掉
因为状态栏会占用你的布局(大概这么高25dp)
怎么办呢?
布局写高一25dp不就得了?
但如果低版本的呢?App的标题栏就会显得巨高无比。
values-v19 又显示出她的作用了
<dimen name="topbar_vertical_height">72dp</dimen>
完美