解决PopupWindow在7.0以上位置不正确的bug
来源:互联网 发布:贵金属交易软件排行 编辑:程序博客网 时间:2024/05/21 10:32
我们在开发过程中会经常使用PopupWindow,但在7.0使用PopupWindow的showAsDropDown方法会出现无依附效果异常,这是什么问题呢?其实原因在于PopupWindow内部出现了BUG,google大牛在发布时候忘记修改测试时代码导致的(只是个人估计),至于以后用PopupWindow都需要对7.0做下处理吗?这个问题嘛我也不清楚
注:只有Build.VERSION.SDK_INT == 24存在这个BUG,7.1已经此BUG已经修复了,只对7.0做下处理就行
解决PopupWindow7.0依附问题有以下俩种解决方法;
方法一:重写showAsDropDown(view)
public class SupportPopupWindow extends PopupWindow {
public SupportPopupWindow(View contentView, int width, int height) { super(contentView, width, height); } @Override public void showAsDropDown(View anchor) { if (Build.VERSION.SDK_INT == 24) { Rect rect = new Rect(); anchor.getGlobalVisibleRect(rect); int h = anchor.getResources().getDisplayMetrics().heightPixels - rect.bottom; setHeight(h); } super.showAsDropDown(anchor); } @Override public void showAsDropDown(View anchor, int xoff, int yoff) { if (Build.VERSION.SDK_INT == 24) { Rect rect = new Rect(); anchor.getGlobalVisibleRect(rect); int h = anchor.getResources().getDisplayMetrics().heightPixels - rect.bottom; setHeight(h); } super.showAsDropDown(anchor, xoff, yoff); }}
方法二:依附方法对build=24做下修改
mView是依附控件的ID
if (Build.VERSION.SDK_INT == 24) { // 获取控件的位置,安卓系统=7.0 int[] location = new int[2]; mView.getLocationOnScreen(location); int x = location[0]; int y = location[1]; L.e(getClass().getSimpleName(), "x : " + x + ", y : " + y); window.showAtLocation(mView, Gravity.NO_GRAVITY, 0, location[1] + mView.getHeight()); } else { window.showAsDropDown(mView); }以上俩种方法都可以
解决问题,其实俩种方法原理都是一样的,只不过是写法不同。
再次申明一下 7.1已经对此BUG修复了,只需要对7.0做处理,最后祝程序猿们工作顺利O(∩_∩)O哈!
阅读全文
0 0
- 解决PopupWindow在7.0以上位置不正确的bug
- 解决PopupWindow在7.0以上位置不正确的bug
- 解决android7.0popupwindow弹出框位置不正确的问题
- Popupwindow在Android 7.0以上系统位置显示不对的解决办法
- PopupWindow在Android7.0和7.1系统上显示位置不正确的问题解决
- PopupWindow弹出菜单位置不正确
- PopupWindow在android5.0以上底部弹出在虚拟按键下方的解决
- 解决bvd中公式编辑框中,有中文字符时,选中文本位置不正确的bug.
- popupwindow在不同theme时候的bug
- popupWindow 在指定位置上的显示
- popupWindow 在指定位置上的显示
- popupwindow 显示在指定的位置
- popupWindow 在指定位置上的显示
- popupWindow 在指定位置上的显示
- popupWindow 在指定位置上的显示
- 解决PopupWindow在android7.0弹出位置错误问题
- Android 开发 Tip 18 -- PopupWindow 在 Android N(7.0)及以上 的兼容性问题
- popupWindow在android7.0以上显示全屏的问题
- H.264中的SPS和PPS
- 算法类面试题解析——美团2016校招:棋子翻转
- Super Jumping! Jumping! Jumping! --DP
- linux编程---进程通信中,利用socketpair实现子进程间通信
- WebRTC实时通信系列教程6 使用RTCDataChannel传输数据
- 解决PopupWindow在7.0以上位置不正确的bug
- 代码 框架学习系列 mybatis 第八篇 mybatis开发dao的方式
- 【旋转卡壳】poj 2187 Beauty Contest
- 日历控件
- B
- 安卓常用方法和布局总结
- 启动hdfs后,一个datanode缺失
- Proxygen编译安装和开发环境的搭建
- layer iframe层的使用,传参