1.在setContentView(R.layout.xxx)之前调用
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
如此,整个布局向上移动,状态栏信息透明在布局之上
2.如果仅仅需要状态栏透明,布局不向上移动,仅需要在1的步骤之后,在R.layout.xxx布局中最外层的布局加上
- android:fitsSystemWindows="true"
- android:clipToPadding="true"即可
3.以上效果已经和5.0以上的效果一直 5.0以上的效果还可以使用if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT); window.setNavigationBarColor(Color.TRANSPARENT); }