Android 解决底部弹出PopWindow时如果有虚拟按键遮挡问题
来源:互联网 发布:淘宝1元秒杀是真的吗 编辑:程序博客网 时间:2024/05/13 09:21
弹出PopWindow时如果手机有虚拟按键可能会出现虚拟按键遮挡住popwindow的布局,导致pop显示不全:
解决办法:设置PopWindow显示的Y轴的位置为虚拟按键高度的位置。下面是获取虚拟按键高度的方法:
/** * Desc: 获取虚拟按键高度 放到工具类里面直接调用即可 */ 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); } } LogUtils.e("虚拟键盘高度"+result); 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"); if (resourceId != 0) { boolean hasNav = res.getBoolean(resourceId); // check override flag String sNavBarOverride = getNavBarOverride(); if ("1".equals(sNavBarOverride)) { hasNav = false; } else if ("0".equals(sNavBarOverride)) { hasNav = true; } return hasNav; } else { // fallback return !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; }
然后在显示PonWindow的地方调用:
popwindow.showAtLocation(findViewById(R.id.layout), Gravity.BOTTOM, 0, getNavigationBarHeight(Context context));
修改后的效果:
方法参考:http://www.cnblogs.com/ldq2016/p/6905429.html
阅读全文
0 0
- Android 解决底部弹出PopWindow时如果有虚拟按键遮挡问题
- Android 解决界面底部弹出dialog被虚拟按键遮挡一部分的问题
- popwindow被虚拟按键遮挡
- Android底部虚拟按键遮挡应用
- android 解决软键盘遮挡popwindow问题
- 解决输入法遮挡布局和华为手机底部虚拟按键遮挡底部界面的方法
- android 解决底部navigation与手机虚拟按键重叠问题
- android 虚拟按键遮挡布局问题
- android自定义popwindow,并且有从底部弹出的动画
- android 虚拟按键遮挡布局
- Android虚拟按键遮挡Listview的FooterView问题
- 解决虚拟按键遮盖底部视图的问题
- Android——Popwindow从底部弹出
- Android开发问题:底部弹出popwindow,会被某些手机底部的菜单栏挡住
- android虚拟键盘弹出遮挡登陆按钮问题
- android隐藏底部虚拟按键
- 【Android】隐藏底部虚拟按键
- 关于Android中fragment中创建popwindow全屏显示时手机状态遮挡popwindow的问题
- 使用java 8 Optional 的正确姿势
- Flume安装及配置介绍
- SpringBoot GET POST 简单搭建
- MATALB 读写文本函数csvwrite,csvread,dlmwrite,dlmread,textread,textscan
- Linux下 源码 PHP7+Apache2.4整合,安装禅道9.5项目管理软件
- Android 解决底部弹出PopWindow时如果有虚拟按键遮挡问题
- UE4 代理事件(C++)
- hashcode()方法
- Linux功耗管理(26)Linux power supply class(1)_软件架构及API汇整
- LintCode:M-丢失的第一个正整数
- input文本框不可编辑的3种方法
- 2017 ACM/ICPC 广西邀请赛||HDU 6185 Covering 【状压DP+矩阵快速幂】
- Nginx虚拟主机配置
- mysql数据库定时远程备份