PopupWindow小坑:无论偏移多大,不会跑出屏幕。 充满显示上方空间
2017-10-12 16:07
302 查看
需要做一个需求,在控件点击后,PopupWindow弹出显示在它的上方,要求覆盖上方所有的位置。
思路如下:获得控件的Y坐标值,将PopupWindow的高度设置为Y的绝对值,PopupWindow显示位置会减去状态栏的高度,因此PopupWindow的高度还需要减去状态栏高度。
showAtLocation方法的第一个参数随便输入一个view没关系,Gravity可选TOP,x=0,y=PopupWindow高度。
注意:一个小坑,之前以为PopupWindow可以移出屏幕,因此设置了很大的高度,Y值计算成负值,结果无效。
代码如下:
9f71
思路如下:获得控件的Y坐标值,将PopupWindow的高度设置为Y的绝对值,PopupWindow显示位置会减去状态栏的高度,因此PopupWindow的高度还需要减去状态栏高度。
showAtLocation方法的第一个参数随便输入一个view没关系,Gravity可选TOP,x=0,y=PopupWindow高度。
注意:一个小坑,之前以为PopupWindow可以移出屏幕,因此设置了很大的高度,Y值计算成负值,结果无效。
代码如下:
private void setUpShow(View view) { View mView = View.inflate(mContext, R.layout.e_aa_item, null); //计算控件的x,y坐标 int[] loca = new int[2]; view.getLocationOnScreen(loca); //计算状态栏高度 int statusBarHeight1 = -1; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { //根据资源ID获取响应的尺寸值 statusBarHeight1 = getResources().getDimensionPixelSize(resourceId); } PopupWindow popupWindow2 = new PopupWindow(mView, getWindow().getAttributes().width, loca[1] - statusBarHeight1); popupWindow2.showAtLocation(view, Gravity.TOP, loca[0], 0); }
9f71
相关文章推荐
- Android PopupWindow显示在控件上方或者下方(含demo下载)
- canvas基础动画-循环从屏幕下方出现-上方消失(可切换速度,字号,单色,彩色,显示用户输入内容)
- 调整显示屏幕偏移和刷新频率[zt]
- ubuntu ibus 图标在屏幕最上方不能显示
- 自适应空间的PopupWindow,动态修改显示位置(支持上下)
- 显示遮罩层并从屏幕上方滑出div
- Fedora 显示屏幕偏移,刷新的频率太低,显示器闪的厉害的解决办法
- Unity3d 实用篇(二) 手机调试小工具,可在屏幕上方显示debug信息
- popupwindow全屏幕显示被状态栏挡住如何解决+Android获取状态栏高度
- 手机屏幕上方显示G、E、3G、H等字母
- 解决:extjs2.0.2的日期空间在chrome下显示异常,宽度占满整个屏幕
- popupwindow全屏幕显示被状态栏挡住如何解决+Android获取状态栏高度
- Android根据屏幕点击位置显示(此处是PopupWindow)
- 在屏幕上方是actionBar tab的ViewPager页面里面嵌套子tab并显示于屏幕下方
- 如何让PopupWindow 显示在屏幕的中央
- Android 实现在屏幕左上方显示一个图片
- Android中VideoView播放视频不能充满屏幕以及视频上的view与视频不同步显示的问题
- c# 处理空白字符,空白字符是指在屏幕不会显示出来的字符
- 解决UITableView数据没有充满屏幕时,显示多余的空白cell的问题