android 隐藏手机底部虚拟按键
今天,简单讲讲android如何隐藏手机下面的虚拟按键。
其实,自己在做界面适配时,老是发现了华为手机存在适配的问题,主要就是华为手机有一个底部的虚拟按键占用了界面的部分空间,所以在网上搜索了如何隐藏华为手机下方的虚拟按键,最终找到的代码。这里记录一下。
/*** 隐藏虚拟按键,并且全屏*/protected void hideBottomUIMenu(){//隐藏虚拟按键,并且全屏if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower apiView v = this.getWindow().getDecorView();v.setSystemUiVisibility(View.GONE);} else if (Build.VERSION.SDK_INT >= 19) {//for new api versions.View decorView = getWindow().getDecorView();int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
// | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar| View.SYSTEM_UI_FLAG_IMMERSIVE;decorView.setSystemUiVisibility(uiOptions);getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}}
/*** 检查是否存在虚拟按键栏* @param context* @return*/public static boolean hasNavBar(Context context) {Resources res = context.getResources();int resourceId = res.getIdentifier("config_showNavigationBar", "bool", "android");if (resourceId != 0) {boolean hasNav = res.getBoolean(resourceId);// check override flagString sNavBarOverride = getNavBarOverride();if ("1".equals(sNavBarOverride)) {hasNav = false;} else if ("0".equals(sNavBarOverride)) {hasNav = true;}return hasNav;} else { // fallbackreturn !ViewConfiguration.get(context).hasPermanentMenuKey();}}/*** 判断虚拟按键栏是否重写* @return*/private static String getNavBarOverride() {String sNavBarOverride = null;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {try {Class c = Class.forName("android.os.SystemProperties");Method m = c.getDeclaredMethod("get", String.class);m.setAccessible(true);sNavBarOverride = (String) m.invoke(null, "qemu.hw.mainkeys");} catch (Throwable e) {}}return sNavBarOverride;}
简单讲讲,这个代码调用时最好先调用hasNavBar(Context context)判断手机是否存在虚拟按键,然后调用hideBottomUIMenu()隐藏虚拟按键,不然在没有虚拟按键的手机上直接使用hideBottomUIMenu()会存在问题。还有一点需要注意,那就是如果设置了沉浸式状态栏,那么是无法隐藏底部虚拟按键的。
或者在xml文件里设置了
android:clipToPadding="true" android:fitsSystemWindows="true"
也是无法隐藏底部虚拟按键的。
android 隐藏手机底部虚拟按键就讲完了。
就这么简单。
android 隐藏手机底部虚拟按键相关推荐
- android 华为底部虚拟键盘隐藏,Android隐藏手机底部虚拟按键的方法
现在的Android手机有好多底部带虚拟按键,比如华为.nexus.魅族等等,一般情况下对APP没啥影响,但是有时候就必须要强制隐藏. 例如:游戏的时候,拍照的时候. 接下来加上几个方法就OK 了,代 ...
- Android实现隐藏手机底部虚拟按键
现在的手机比较流行底部带虚拟按键,比如华为.nexus,一般情况下对开发一个APP没啥影响,但是不一般情况下就会有影响的,比如全屏录像功能, 用简单的方法直接获取camera支持的手机屏幕分辨率然后用 ...
- 安卓平板隐藏虚拟按键_Android实现隐藏手机底部虚拟按键
现在的手机比较流行底部带虚拟按键,比如华为.nexus,一般情况下对开发一个APP没啥影响,但是不一般情况下就会有影响的,比如全屏录像功能, 用简单的方法直接获取camera支持的手机屏幕分辨率然后用 ...
- 解决输入法遮挡布局和华为手机底部虚拟按键遮挡底部界面的方法
先上最终的代码: public class AndroidWorkaround {public static void assistActivity(View content) {new Androi ...
- Android适配页面底部虚拟按键
想全面了解解决方案不妨看下这两篇文章: https://blog.csdn.net/smileiam/article/details/69055963 https://blog.csdn.net/we ...
- Android适配页面底部虚拟按键,解决与软键盘冲突,AndroidBug5497Workaround
想全面了解解决方案不妨看下这两篇文章: https://blog.csdn.net/smileiam/article/details/69055963 https://blog.csdn.net/we ...
- android dialog隐藏虚拟按键,关于此框架在BottomSheetDialogFragment使用时,华为手机底部虚拟按键弹出与隐藏时输入框位置不贴键盘...
我这边试过还是不行,而且我们ui是要dialog不全屏的,下面附上代码 public void onStart() { super.onStart(); Dialog dialog = getDial ...
- h5+、mui创建手机APP,华为等手机底部虚拟按键问题
网址:http://ask.dcloud.net.cn/question/56517 2019年7月15日03:07:38更新,此解决方式会导致文件上传功能炸掉,可以去我7.15的博客查看解决方式 转 ...
- android 隐藏底部虚拟按键
隐藏底部虚拟按键,但是如果你在底部网上滑动还是显示的出来的, 我在项目中写在了BaseActivity里面,大致如下 ,我这用在贩卖机上面,手机上的app开发还真没用过, 下面测试可以使用,已经使用在 ...
最新文章
- Nginx+UWSGI+Django配置全过程
- 《AlwaysRun团队》第三次作业:团队项目的原型设计
- vi编辑器基本使用方法
- 鼠标经过图片抖动效果
- 一步步使用SAP C4C Cloud Application Studio创建一个BO和对应的屏幕
- 进程环境之环境表【转】
- Docker基础入门及示例
- c查看变量类型_C语言的变量、常量及运算
- 手机运行内存6G,可是开机一会就变成2个多G了,为什么?
- 转:用Winform实现屏幕小键盘
- 九、Linux系统安装和常见故障排除
- (Singleton)单例模式的Java实现
- springboot+springcloudgateway+nacos+sleuth+zipkin+mysql
- android 色彩搭配,色彩搭配利器:最好用的配色工具App Top5
- ebay 后台HTML有尺寸宽度要求吗,Ebay后台有哪些常用的操作页面?
- 计算机的方差符号怎么输入,【2人回答】标准差的符号在电脑上怎么输入?-3D溜溜网...
- 跑步减肥的正确姿势与方法 不再担心女生跑步腿会变粗
- Camera效果测试-白平衡AWB测试
- BZOJ 2563 阿狸和桃子的游戏 (贪心)
- git pull 报错 Your local changes would be overwritten by merge. Commit, stash or revert them to procee