@Override
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
if (hasFocus && Build.VERSION.SDK_INT >= 19)
{
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility((
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
));
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
winParams.flags |= bits;
win.setAttributes(winParams);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
}
}
当页面的焦点发生变化的时候,就调用此函数,设置页面窗口为全屏;防止从别的页面回来后导航栏又弹出来,典型的如dialog.
PS:在8.0的时候,状态栏可能会出可能会出问题,配合以下代码使用:
<!--设置application的theme;隐藏状态栏,并设置全屏-->
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
此theme可设置给activity,也可以设置给dialog。