虚拟按键遮挡app页面,如华为荣耀7i

最近开发遇到一个问题,app首页底部的一部分,被手机的虚拟按键遮挡住了,导致内容显示不全,之后各种搜索,记录如下.

①:

我用到了slidingmenu控件加载,而slidingmenu在版本比较高的手机上,显示有隐藏问题,没有计算虚拟按键所占用的空间,解决:

找到slidingmenu.java这个类,修改protected boolean fitSystemWindows(Rect  insets)方法内容,将里面的

int bottomPadding = insets.bottom;
修改为:

int bottomPadding = insets.bottom;
if (Build.VERSION.SDK_INT >= 21) {
   Resources resources = getContent().getResources();
   int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
   if (resourceId > 0) {
      bottomPadding += resources.getDimensionPixelSize(resourceId);
   }
}
此处参考 : https://github.com/jfeinstein10/SlidingMenu/issues/680

②:

当然还可以自己判断一下手机型号或者版本,然后在app被遮挡页面底部,填充一个view,将自己的布局顶起来,不过这个方法很low,而且使用范围也不是很广泛,

Android机型太多太乱,不容易写逻辑.

也有个知乎参考: https://www.zhihu.com/question/35292413

③:一些别的方法就不列举了,比如隐藏虚拟机,换控件之类的.


补充: 随着android版本的频繁更新,或者产品的一些奇葩要求,slidingmenu貌似有点力不从心了,还是考虑原生控件吧,而且as在创建新的项目时候,选择可以

侧滑的项目,还是很方便的.


你可能感兴趣的:(app,开发,Android,studio,遮挡屏幕)