最近在公司的项目中 , 华为用户反馈出了一个问题 , 华为手机底部有虚拟按键栏把应用的底部内容遮挡住了 , 现在已经把这个问题解决了 , 记录一下,给各位遇到相同问题的童鞋做一下参考.

处理虚拟按键栏工具类:

public class ScreenUtils {//获取虚拟按键的高度public static int getNavigationBarHeight(Context context) {int result = 0;if (hasNavBar(context)) {Resources res = context.getResources();int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android");if (resourceId > 0) {result = res.getDimensionPixelSize(resourceId);}}return result;}/*** 检查是否存在虚拟按键栏** @param context* @return*/@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)public static boolean hasNavBar(Context context) {Resources res = context.getResources();//读取系统资源函数int resourceId = res.getIdentifier("config_showNavigationBar", "bool", "android");//获取资源idif (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;}
}

调用工具类方法 , 获取虚拟按键高度:

//处理虚拟按键
//判断用户手机机型是否有虚拟按键栏                  if(ScreenUtils.hasNavBar(getApplicationContext())){setNavigationBar();}//处理虚拟按键private void setNavigationBar() {int barHeight = ScreenUtils.getNavigationBarHeight(getApplicationContext());LinearLayout.LayoutParams barParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);TextView tv = new TextView(this);tv.setHeight(barHeight);tv.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);tv.setBackgroundColor(Color.BLACK);llNavigationBar.addView(tv,barParams);}

小编整理了一份Android电子书籍,需要的童鞋关注底部公众号(longxuanzhigu)回复:“e_books” 即可获取哦!

以下是个人公众号(longxuanzhigu),之后发布的文章会同步到该公众号,方便交流学习Android知识及分享个人爱好文章:

Android虚拟按键栏处理方案相关推荐

  1. android按钮被遮住,解决Android 虚拟按键遮住了页面内容的问题

    在启动页的时候华为手机虚拟按键遮挡住了启动页下面的字找了找解决办法,特地记录一下 第一种办法:扩展虚拟按键 //状态栏 @ 顶部getWindow().addFlags(WindowManager.L ...

  2. android 覆盖虚拟按键,解决Android 虚拟按键遮住了页面内容的问题

    在启动页的时候华为手机虚拟按键遮挡住了启动页下面的字找了找解决办法,特地记录一下 第一种办法:扩展虚拟按键 //状态栏 @ 顶部getWindow().addFlags(WindowManager.L ...

  3. android 虚拟按键源码流程分析

    android 虚拟按键流程分析 今天来说说android 的虚拟按键的源码流程.大家都知道,android 系统的状态栏,虚拟按键,下拉菜单,以及通知显示,keyguard 锁屏都是在framewo ...

  4. uniapp中隐藏Android虚拟按键

    前言: uniapp中如何隐藏Android虚拟按键 (如下图) 解决: 通过h5-plus中的方法,plusready 后调用 https://www.html5plus.org/doc/zh_cn ...

  5. Android 虚拟按键隐藏或显示之后共享元素动画异常解决方案

    背景 本篇算是共享元素的第三篇文章.主要还是因为第一篇才会衍生出来了第二篇和第三篇文章,后两篇均属于bug的分析和解决. 1.Android 仿微信朋友圈图片拖拽返回 2.Android 共享元素动画 ...

  6. android 虚拟按键自定义,Android手机底部栏虚拟按键的操作

    防止屏幕长度和主流不符导致底部出现黑色空白区域,应该在AndroidManifest.xml文件中,添加如下代码: 实例图.png 至于在Application中添加 android:resizeab ...

  7. android 虚拟按键挡住布局,Android 关于导航栏(虚拟按键)遮挡PopupWindow底部布局的问题...

    我们自定义popupWindow的时候,一般会设置这些参数 setContentView(contentView); //设置高度为屏幕高度 setWidth(UIUtils.getScreenHei ...

  8. Android 虚拟按键与沉浸式的适配

    根据公司产品的要求,app要实现全屏模式,也就是4.4以后的所谓的沉浸式. 在values-v19和values-v21的styles里添加以下代码,实现19以上的系统的沉浸式: <style ...

  9. android 虚拟按键挡住布局,Android 虚拟按键遮住了页面内容解决办法

    在启动页的时候华为手机虚拟按键遮挡住了启动页下面的字找了找解决办法,特地记录一下 第一种办法:扩展虚拟按键 //状态栏 @ 顶部getWindow().addFlags(WindowManager.L ...

最新文章

  1. leetcode 179. 最大数
  2. 三目运算符引发的一次事故
  3. 自然语言处理与文本检索
  4. STL源码剖析 priority_queue
  5. Spring Cloud微服务之父工程的创建(一)
  6. 建设自己拥有的B2C网站一般需要什么样的插件以及大体花费
  7. onenote使用python开发_如何充分利用 OneNote,发挥它的全部价值和潜力?
  8. pwm波如何控制电机代码_如何通过PLC控制伺服电机?
  9. 从基本组件到结构创新,67页论文解读深度卷积神经网络架构
  10. 带K线的macd选股指标详解 优化MACD王牌指标 通达信macd选股指标源码
  11. recycle view drag and swip demo
  12. 你做过哪些事情让你女朋友感动到哭,这个100%可以做到!
  13. TO DO ... ...
  14. 计算机老师工作年度总结,计算机老师年终工作总结3篇
  15. 博客园的html编辑器,博客园 - 小桥 - 在线HTML编辑器原理
  16. 【mmaction2 入门教程 01】 slowfast训练配置 日志分析 测试结果分析
  17. 【转】手机连接pc,驱动装好,但adb devices找不到设备
  18. IIS7+PHP安装教程
  19. 搜索引擎优化高级编程(php版),搜索引擎优化高级编程PHP版(含源码)
  20. Java中的八种基本数据类型

热门文章

  1. (通道抠图)PS如何换背景+抠头发
  2. android单元测试adapter,Android 单元测试
  3. Kettle(2):安装Kettle
  4. 仿射密码python_CTF-仿射密码(python)
  5. android usb设置在哪,手机usb调试在哪,小编教你安卓手机怎么打开USB调试
  6. origin保存图片
  7. 开放小程序插件功能,小程序插件的使用
  8. 鸿蒙系统吃鸡用转区吗,吃鸡跨系统规则已出,账号可直接更换,不用担心数据丢失!...
  9. 工业机器人三点工具定位法图文_工业机器人工具坐标系(TCF)标定的六点法原理...
  10. un8.4:SpringSecurity——身份认证和授权。