bug_ _Popwindow被魅族手机自带虚拟键挡住完美解决
======== 1
之前做了一个分享的功能,从底部弹出popwindow进行分享,但是由于部分手机自带虚拟键,如魅族X4,所以弹出的popwindow被虚拟键挡住,
在网上找了好多资料,一些资料说把虚拟键隐藏,却是可以实现,但是总觉得不符合要求。然后又看了一下qq的样式,它弹出的popwindow在虚拟键之上,
然后就在网上找各种popwindow的demo,最后仔细查看一下代码,才发现是我在设置popwindow的高度的时候将它的高度设置成了wrap_content,这里我觉得有必要给大家说一下fill_parent、wrap_content、match_parent的区别:
1)fill_parent
设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。
2) wrap_content
设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。
3)match_parent
Android2.2中match_parent和fill_parent是一个意思.两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_parent了
这里只需要将popwindow的高度设置成match_parent 就完美解决了问题,很高兴有木有。
========== 2 我在底部弹出一个popwindow 上面有几个按钮,在其他手机上没有问题,但在魅族手机上 ,取消按钮却被遮挡了 ,大家有遇到这个问题吗?
前几天刚好遇到过 现奉上解决办法:
public static int getDpi(Activity activity) {
Display display = activity.getWindowManager().getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
int height = 0;
@SuppressWarnings("rawtypes")
Class c;
try {
c = Class.forName("android.view.Display");
@SuppressWarnings("unchecked")
Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
method.invoke(display, dm);
height = dm.heightPixels;
} catch (Exception e) {
e.printStackTrace();
}
return height;
}
public static int[] getScreenWH(Context poCotext) {
WindowManager wm = (WindowManager) poCotext
.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
return new int[] { width, height };
}
public static int getVrtualBtnHeight(Context poCotext) {
int location[] = getScreenWH(poCotext);
int realHeiht = getDpi((Activity) poCotext);
int virvalHeight = realHeiht - location[1];
return virvalHeight;
}
关键是最后一个方法:获取虚拟按键的高度,相信你的pop该弹多高 我就不多说了 都懂得
加个判断,4.0以上才有
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= 14) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
bug_ _Popwindow被魅族手机自带虚拟键挡住完美解决的更多相关文章
- 10.14_魅族手机音乐播放无故暂停,MetroUICss-tile中的字如何居中
(1)魅族手机,播放音乐,无故暂停.不管是自带的音乐播放程序,还是下载的其他音乐播放器都是如此.而且,手机上有个Google服务耗电量非常高,会经常弹出登陆Google账号的弹出项. (2)Metro ...
- 手机自带的显示基站命令(android手机定位,iphone基站定位)
手机自带的显示基站命令(安卓手机定位,苹果手机基站定位) 分类: 通信和网络2012-02-07 17:48 1734人阅读 评论(0) 收藏 举报 手机htciphone中兴三星网络 安卓手机自带快 ...
- 网络编程之PC版与Android手机版带断点续传的多线程下载
一.多线程下载 多线程下载就是抢占服务器资源 原理:服务器CPU 分配给每条线程的时间片相同,服务器带宽平均分配给每条线程,所以客户端开启的线程越多,就能抢占到更多的服 ...
- 解决魅族手机连接win7连不上
折腾了好半天,win7就是连接不了魅族手机....我搞andorid开发的 连接不上 调个毛程序啊. 最后解决了 新建此文件即可.文件内容更为 0x2a45关闭即可. 来自为知笔记(Wiz)
- Android手机自带内部存储路径的获取 (转)
转自:http://my.oschina.net/liucundong/blog/288183 我有一台中兴的Android手机,型号是 ZTE U930HD,手机没有插入外置SD卡(也就是Micro ...
- 魅族手机Listview下拉出现hold字样的奇葩问题解决方案
前几天测试在魅族手机上测试,下拉listview,出现奇葩的hold字样,╭∩╮(︶︿︶)╭∩╮,这锅老子不背,但是问题还得解决吧,如下是对于魅族不同版本的出现这种情况的处理: 2.3之前: andr ...
- noVNC支持手机自带键盘输入
代码修改说明 novnc的web链接类似为:http://192.168.1.177:6080/vnc_auto.html?token=105356fa-bbe3-43e4-a0ce-7703dc42 ...
- 魅族手机USB调试无法打开、log无法打印
MEIZU 在打开usb调试允许时,总提示:because an app is oobscuring a premision request, Setting can't verify your re ...
- 华为手机自带浏览器不支持 ES6 语法
原文地址:https://caochangkui.github.io/huawei-es6/ 华为手机自带浏览器对 es6 语法的支持度极差,哪怕最新的荣耀10 手机也有该毛病!所以,移动端项目开发中 ...
随机推荐
- 论文笔记之:From Facial Parts Responses to Face Detection: A Deep Learning Approach
From Facial Parts Responses to Face Detection: A Deep Learning Approach ICCV 2015 从以上两张图就可以感受到本文所提方法 ...
- sersync2 实时同步配置
在同步服务器上开启sersync,将监控路径中的文件同步到目标服务器,因此需要在同步服务器配置sersync,在同步目标服务器配置rsync. 一.同步目标服务器配置rsync # rpm -qa | ...
- Python-正则零宽断言及命名捕获(类PHP)
(一)零宽断言 说明:本文的例子使用python描述 首先说明一下什么是零宽断言,所谓零宽断言就是并不去真正的匹配字符串文本,而仅仅是匹配对应的位置. 正则表达式中有很多这样的断言 ...
- pip使用报错【cannot import name HTTPSHandler】
python2.7,报错如下: Traceback (most recent call last): File "/usr/local/bin/pip", line 9, in & ...
- 怎么给OCR文字识别软件设置正确的扫描分辨率
ABBYY FineReader 12是一款专业的OCR文字识别软件,可快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜索的文本,不仅支持对页扫描,还支持多页扫描,扫描分辨率的选 ...
- Consul
1. 什么是consul? 是一个服务管理软件. 支持多数据中心下,分布式高可用的,服务发现和配置共享. consul支持健康检查,允许存储键值对. 一致性协议采用 Raft 算法,用来保证服务的高可 ...
- JavaScript对象就是一组属性(方法)的集合
在JavaScript中,每个对象可以看作是多个属性(方法)的集合,引用一个属性(方法) 很简单,即: 对象名.属性(方法)名 除此之外,还可以用方括号的形式来引用: 对象名[“属性(方法)名”] 注 ...
- 使用定时器实现JavaScript的延期执行或重复执行
使用定时器实现JavaScript的延期执行或重复执行 window 对象提供了两个方法来实现定时器的效果,分别是window.setTimeout()和 window.setInterval.其中前 ...
- python compile
compile(source, filename, mode[, flags[, dont_inherit]]) 参数source:字符串或者AST(Abstract Syntax Trees)对象. ...
- flex html 用flex展示html
1. 目的 flex展示html 可以保护网页内容 2. 参考 http://stackoverflow.com/questions/260270/display-html-in-an-actions ...