Android5.0以上的状态栏透明和沉浸式模式兼容底部导航栏与界面重复

设置状态栏和导航栏透明的方式

这里提供三种方式:

1,主题方式 

可以用于<appliction>节点下的主题,也可以根据项目需求放在相应的<活动>节点下的主题上;这种方式兼顾到Android本身状态栏对于不同版本的适配4.4〜5.0全透明,5.0以上半透明),会根据不同版本来适配。


<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<!--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色-->
<item name="android:statusBarColor">@android:color/transparent</item>

2,通过系统提供的标志位设置 (推荐)
这种方式和方式一同样会根据Android的本身状态栏对于不同版本来适配




if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//设置透明状态栏
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);//设置透明导航栏
}


3,通过给系统窗口设置颜色值  
这种方式可以避免Android本身状态栏对于不同版本的适配,只要用这种方式设置,5.0以上也可以实现全透明。但前提要求是Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP,只能适用于5.0以上的系统。


	if (Build.VERSION.SDK_INT >= 21) {
			View decorView = getWindow().getDecorView();
			int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
			decorView.setSystemUiVisibility(option);
//			getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//设置透明状态栏
//			getWindow().setNavigationBarColor(Color.TRANSPARENT);//将导航栏设置为透明色
//			getWindow().setStatusBarColor(Color.TRANSPARENT);
			getWindow().setStatusBarColor(Color.parseColor("#00000000"));
		}


状态栏和顶部内容不和状态栏重复

开发中大部分需求是实现状态栏和顶部的控件是同一个颜色,同时,控件内容也不和状态栏重复。要实现这样的效果关键是在XML中给顶部控件添加上两个属性就可以了,这两个属性在我博客的Android中的XML属性中都有详细的文章。这里就不多赘述了。


android:fitsSystemWindows="true"  
android:clipToPadding="true"  








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值