所谓"沉浸状态栏"的实现需要两点:
设置状态栏为透明或者半透明状态;
整体布局可以置于状态栏下方.
1. 状态栏的配置
对于状态栏的配置有两种方式:
在manifest中配置Activity的theme属性
在theme文件中添加android:windowTranslucentStatus属性(当然仅支持api19, 即Android4.4及以上, 且根据这个属性名称可知只是半透明);
...
true
效果:
键盘隐藏
键盘显示
Android5.0键盘未弹出
Android5.0键盘弹出
通过代码动态设置
相对于通过theme的属性配置, 这种方案可以实现状态栏全透明.
/**
* 设置状态栏为全透明
* 通过设置theme的方式无法达到全透明效果
*
* @param activity
*/
@TargetApi(19)
private static void transparencyStatusBar(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//5.0及其以上
Window window = activity.getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {<