这个特性是andorid4.4支持的,最少要api19才可以使用。下面介绍一下使用的方法,非常得简单
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// 透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
状态栏是指手机屏幕上面显示电量、信号的那一栏,
导航栏是指有些手机没有物理按键,程序运行是会在最下方的那些返回键、Home键那一栏
但是在我们实际开发过程中,如果仅仅只是调用这个方法会遇到一系列的问题:
1、设置状态栏透明之后,布局页面会被顶上去,导致界面内部的部分布局和状态栏发生覆盖,网上会有很多资料让在布局的最上面那个空间里面加入两行代码(比如你最上面的是TextView,那则在TextView的布局里面加入这两行代码):
android:fitsSystemWindows=true
android:clipToPadding=true
解释一下上面两个布局属性的意思:
android:clipToPadding 定义布局间是否有间距
android:fitsSystemWindows=”true” 意思就是设置应用布局时是否考虑系统窗口布局;如果为true,将调整系统窗口布局以适应你自定义的布局。比如系统有状态栏,应用也有状态栏时。看你这个布局代码,恰恰是在定义标题栏样式,所以用到这行代码了。
2、对于上面这种处理方式,在Activity里面是可以实现的,但是对于目前市面上绝大部分的应用程序而言,都是采用的Activity里面嵌套使用Frangment的模式,如果是这种结构,使用上面那种处理方式,则不会达到