全屏显示并隐藏底部导航栏
- 全屏显示
可以在配置清单文件中设置,也可在代码中设置
<!-- 设置全屏显示 -->
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
也可在`activity`的`onCreate`中`setContentView`前设置
// 将activity设置为全屏显示
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
隐藏底部导航栏
也需要在
activity的onCreate中setContentView前设置
/**
* 隐藏虚拟栏 ,显示的时候再隐藏掉
*
* @param window
*/
public static void hideNavigationBar(Window window) {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
window.getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
//布局位于状态栏下方
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
//全屏
View.SYSTEM_UI_FLAG_FULLSCREEN |
//隐藏导航栏
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
if (Build.VERSION.SDK_INT >= 19) {
uiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
} else {
uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
window.getDecorView().setSystemUiVisibility(uiOptions);
});
}
-
dialog弹出时隐藏导航栏
普通Dialog中
Dialog dialog = builder.create();
NavigationBarUtil.focusNotAle(dialog.getWindow());
dialog.show();
NavigationBarUtil.hideNavigationBar(dialog.getWindow());
NavigationBarUtil.clearFocusNotAle(dialog.getWindow());
自定义ProgressDialog,重写show()方法
@Override
public void show() {
NavigationBarUtil.focusNotAle(window);
super.show();
NavigationBarUtil.hideNavigationBar(window);
NavigationBarUtil.clearFocusNotAle(window);
}
4.工具类贴一下
public class NavigationBarUtil {
/**
* 隐藏虚拟栏 ,显示的时候再隐藏掉
*
* @param window
*/
public static void hideNavigationBar(Window window) {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
window.getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
//布局位于状态栏下方
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
//全屏
View.SYSTEM_UI_FLAG_FULLSCREEN |
//隐藏导航栏
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
if (Build.VERSION.SDK_INT >= 19) {
uiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
} else {
uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
window.getDecorView().setSystemUiVisibility(uiOptions);
});
}
/**
* dialog 需要全屏的时候用,和clearFocusNotAle() 成对出现
* 在show 前调用 focusNotAle show后调用clearFocusNotAle
*
* @param window
*/
public static void focusNotAle(Window window) {
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
}
/**
* dialog 需要全屏的时候用,focusNotAle() 成对出现
* 在show 前调用 focusNotAle show后调用clearFocusNotAle
*
* @param window
*/
public static void clearFocusNotAle(Window window) {
window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
}
}
本文介绍了如何在Android应用中实现全屏显示并隐藏底部导航栏,包括在XML布局和代码中进行设置的方法。同时,讨论了在Dialog弹出时如何保持导航栏隐藏,提供了一种在普通Dialog中的实现方式以及分享了一个相关的工具类。
840

被折叠的 条评论
为什么被折叠?



