我们自定义popupWindow的时候,一般会设置这些参数

setContentView(contentView);

//设置高度为屏幕高度

setWidth(UIUtils.getScreenHeight(context));

//设置宽度为屏幕宽度

setHeight(UIUtils.getScreenWidth(context));

setFocusable(true);

//dismiss时将背景透明度恢复为1f

setOnDismissListener(()-> modifyActivityAlpha(1f));

setBackgroundDrawable(new BitmapDrawable());

setAnimationStyle(R.style.action_sheet_no_animation);

//将透明度alpha值设为0.5f

modifyActivityAlpha(0.5f);

//在底部展示

showAtLocation(context.getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);

//改变背景透明度

private void modifyActivityAlpha(float alpha) {

WindowManager.LayoutParams params = context.getWindow().getAttributes();

params.alpha = alpha;

context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

context.getWindow().setAttributes(params);

}

在魅族的手机(没有底部导航栏)上很开心很愉快的运行着,但是当我看到华为手机(有底部虚拟按钮)的显示结果时我是很头疼的,popupWindow有一部分布局被虚拟按钮遮挡了。

图一(可以看到底部滑不上去,一部分被遮挡了。)

one.png

在经过一番google后发现大家一致推荐的解决方案,在参数设置中加上

setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

满怀期待的等待着运行的结果,但是发现并没有解决问题,我开始思考哪里出问题了。

后来发现是宽高设置的问题,我把宽高的设置改为:

setWidth(WindowManager.LayoutParams.MATCH_PARENT);

setHeight(WindowManager.LayoutParams.MATCH_PARENT);

因为之前设置的是屏幕的宽高,是把虚拟按键的高度算在内的。

终于解决了有虚拟按键时全屏的popupWindow出现的遮挡问题。

图二(问题解决)

image.png

下面是最终的部分代码

public void init(View contentView, View layoutContent) {

setContentView(contentView);

setWidth(WindowManager.LayoutParams.MATCH_PARENT);

setHeight(WindowManager.LayoutParams.MATCH_PARENT);

setFocusable(true);

setOnDismissListener(()-> modifyActivityAlpha(1f));

setBackgroundDrawable(new BitmapDrawable());

setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

setAnimationStyle(R.style.action_sheet_no_animation);

modifyActivityAlpha(0.5f);

showAtLocation(context.getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);

}

补充:在测试中仅仅使用了6.0的手机,有博主指出在7.0以上手机上会出现无效的问题,大家可以参考:http://blog.csdn.net/qinyunying/article/details/55051193。

如果解决了你的问题,希望能给个

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

  1. 【23】华为Mate9导航栏遮挡PopupWindow底部布局

    一.上图 二.问题描述 华为Mate9手机,UI的表现形式是底部黑色的导航栏遮挡住了PopupWindow底部重置与确认按钮的布局. 三.问题分析与解决思路 网上很多解决方法都是说设置popupWin ...

  2. java屏蔽虚拟按键代码_Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar...

    场景分析, 为了完全实现沉浸式效果,在进入特定的app后可以将导航栏移除,当退出app后再次将导航栏恢复.(下面将采用发送广播的方式来移除和恢复导航栏) ps:不修改源码的情况下,简单的沉浸式效果实现 ...

  3. Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar...

    场景分析, 为了完全实现沉浸式效果,在进入特定的app后可以将导航栏移除,当退出app后再次将导航栏恢复.(下面将采用发送广播的方式来移除和恢复导航栏) ps:不修改源码的情况下,简单的沉浸式效果实现 ...

  4. android 导航栏半透明,Android 沉浸式/透明式状态栏、导航栏

    前言 Android 从4.4开始引进透明状态栏和导航栏的概念,并且在5.0进行了改进,将透明变成了半透明的效果.虽然此特性最早出现在ios,但不否认效果还是很赞的. 至于4.4以下的手机,就不要考虑 ...

  5. 9.后台管理系统主页面布局以及左侧导航栏设计

    9.后台管理系统主页面布局以及左侧导航栏设计 1.首页布局 步骤: 在views目录下新建Main.vue文件,作为登录之后的布局 参考:element-ui 使用此模块的目的是,当中间内容部分有超出 ...

  6. Outlook如何将导航栏从左侧移动到底部

    好久没更新公众号了 从今天开始恢复公众号的运营!!! 今天我们就来讲干货~ 下午有一位小姐姐询问我,为什么我的outlook的导航栏在左侧,能不能改成底部.和原来的样子一样~~ 我刚开始认为,找到视图 ...

  7. Android 导航栏虚拟按键

    Android 虚拟按键 Android手机可分为有导航栏以及没导航栏两种,一般有物理按键的机器不会带有导航栏,而没有物理按键的机器则基本会带,比如华为的手机基本都是带导航栏的.当然现在全面屏手机大多 ...

  8. android 虚拟键背景,Android 设置应用的底部导航栏(虚拟按键)背景颜色

    Android手机机型种类繁多,但是虚拟按键也就是底部的导航栏,不外乎两种设计方式,一种是作为虚拟按键设计到屏幕内部,一种是作为系统按键设计到屏幕外面. 对于按键在屏幕内部的机型,因为虚拟按键也是屏幕 ...

  9. Android 设置应用的底部导航栏(虚拟按键)背景颜色

    对于有些Android手机的底部虚拟键,进行设置颜色,其实很简单,利用系统提供的Api一步代码就可以搞定,只支持Android5.0以上的系统 //设置底部导航栏颜色if (Build.VERSION ...

最新文章

  1. linux 查看 文档 不显示注释 命令
  2. 信息化建设规划_苏交集团施工企业信息化建设规划分享会顺利召开
  3. 数码管流动显示(自己的单片机)
  4. 如何在 ASP.Net Core 中使用 Consul 来存储配置
  5. flash倒计时_11款免费又好用的PPT倒计时神器
  6. linux使用rsync增量保存文件与无交互自动传输
  7. sqlserver 按日、周、月统计方法
  8. 顶配售价 18499 元,用上 M1 的 iPad Pro 性能与价格“直逼”电脑,这届苹果发布会有你喜欢的吗?
  9. Centos7搭建LAMP+Typecho博客
  10. [PHP 作为iOS后台Json格式HTTP通信及文件上传的实现]
  11. sql条件查询表数据条数
  12. 熊出没电锯机器人哪一集_熊出没伐木机器人第几集 熊出没光头强造伐木机器人是哪一集?...
  13. windows 系统遍历USB设备 VID和PID
  14. Quadratic equation
  15. Excel 中固定行标题和列标题
  16. VirtualBox 虚拟机里网络很慢的解决方法
  17. Mac环境配置SSH Key
  18. leveldb Arena 分析
  19. java 获取代码注释
  20. 美国大学计算机研究生放榜一亩三分地,美国研究生留学论坛(一亩三分地论坛研究生)...

热门文章

  1. DeepFusion:基于单视图深度和梯度预测的单目SLAM实时稠密三维重建
  2. CVPR2020 | PV-RCNN: 3D目标检测 Waymo挑战赛+KITTI榜 单模态第一算法
  3. 一个狠招|如何高效学习3D视觉
  4. maven项目首页显示的问题
  5. 双线性插值(Bilinear Interpolation)
  6. ChemDataExtractor:从PDF、HTM、文本等中提取化学数据
  7. R-Bioconductor安装
  8. PICRUSt2分析实战:16S扩增子OTU或ASV预测宏基因组、新增KEGG层级
  9. MPB:华南农大王文策组-​水禽肠道食糜微生物脂多糖含量的检测
  10. Nature:依靠锰的氧化实现细菌的化能自养生长