今天,简单讲讲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 隐藏手机底部虚拟按键相关推荐

  1. android 华为底部虚拟键盘隐藏,Android隐藏手机底部虚拟按键的方法

    现在的Android手机有好多底部带虚拟按键,比如华为.nexus.魅族等等,一般情况下对APP没啥影响,但是有时候就必须要强制隐藏. 例如:游戏的时候,拍照的时候. 接下来加上几个方法就OK 了,代 ...

  2. Android实现隐藏手机底部虚拟按键

    现在的手机比较流行底部带虚拟按键,比如华为.nexus,一般情况下对开发一个APP没啥影响,但是不一般情况下就会有影响的,比如全屏录像功能, 用简单的方法直接获取camera支持的手机屏幕分辨率然后用 ...

  3. 安卓平板隐藏虚拟按键_Android实现隐藏手机底部虚拟按键

    现在的手机比较流行底部带虚拟按键,比如华为.nexus,一般情况下对开发一个APP没啥影响,但是不一般情况下就会有影响的,比如全屏录像功能, 用简单的方法直接获取camera支持的手机屏幕分辨率然后用 ...

  4. 解决输入法遮挡布局和华为手机底部虚拟按键遮挡底部界面的方法

    先上最终的代码: public class AndroidWorkaround {public static void assistActivity(View content) {new Androi ...

  5. Android适配页面底部虚拟按键

    想全面了解解决方案不妨看下这两篇文章: https://blog.csdn.net/smileiam/article/details/69055963 https://blog.csdn.net/we ...

  6. Android适配页面底部虚拟按键,解决与软键盘冲突,AndroidBug5497Workaround

    想全面了解解决方案不妨看下这两篇文章: https://blog.csdn.net/smileiam/article/details/69055963 https://blog.csdn.net/we ...

  7. android dialog隐藏虚拟按键,关于此框架在BottomSheetDialogFragment使用时,华为手机底部虚拟按键弹出与隐藏时输入框位置不贴键盘...

    我这边试过还是不行,而且我们ui是要dialog不全屏的,下面附上代码 public void onStart() { super.onStart(); Dialog dialog = getDial ...

  8. h5+、mui创建手机APP,华为等手机底部虚拟按键问题

    网址:http://ask.dcloud.net.cn/question/56517 2019年7月15日03:07:38更新,此解决方式会导致文件上传功能炸掉,可以去我7.15的博客查看解决方式 转 ...

  9. android 隐藏底部虚拟按键

    隐藏底部虚拟按键,但是如果你在底部网上滑动还是显示的出来的, 我在项目中写在了BaseActivity里面,大致如下 ,我这用在贩卖机上面,手机上的app开发还真没用过, 下面测试可以使用,已经使用在 ...

最新文章

  1. Nginx+UWSGI+Django配置全过程
  2. 《AlwaysRun团队》第三次作业:团队项目的原型设计
  3. vi编辑器基本使用方法
  4. 鼠标经过图片抖动效果
  5. 一步步使用SAP C4C Cloud Application Studio创建一个BO和对应的屏幕
  6. 进程环境之环境表【转】
  7. Docker基础入门及示例
  8. c查看变量类型_C语言的变量、常量及运算
  9. 手机运行内存6G,可是开机一会就变成2个多G了,为什么?
  10. 转:用Winform实现屏幕小键盘
  11. 九、Linux系统安装和常见故障排除
  12. (Singleton)单例模式的Java实现
  13. springboot+springcloudgateway+nacos+sleuth+zipkin+mysql
  14. android 色彩搭配,色彩搭配利器:最好用的配色工具App Top5
  15. ebay 后台HTML有尺寸宽度要求吗,Ebay后台有哪些常用的操作页面?
  16. 计算机的方差符号怎么输入,【2人回答】标准差的符号在电脑上怎么输入?-3D溜溜网...
  17. 跑步减肥的正确姿势与方法 不再担心女生跑步腿会变粗
  18. Camera效果测试-白平衡AWB测试
  19. BZOJ 2563 阿狸和桃子的游戏 (贪心)
  20. git pull 报错 Your local changes would be overwritten by merge. Commit, stash or revert them to procee

热门文章

  1. Jenkins命令可视化
  2. Java 将字符串转换为字符数组 toCharArray()
  3. MongoDB安装步骤
  4. linux下如何产生core,调试core
  5. tableView的单选问题
  6. Jquery 三种方法获取取Checkbox是否选中
  7. 仙剑4按键取钱的东东。
  8. Android ServiceConnection
  9. cannot be found on object of type xx.CacheExpressionRootObject
  10. 使用ImitateLogin模拟登录百度