关于Android popupWindow的位置显示 showAtLocation理解

近日发现PopupWindow的位置触摸不定,网上的例子解析就...


先上效果图:

.


我的目的是点击[编辑职位] 时显示popupWindow ,那么popWindow的显示参数如何设置呢?


首先需要知道的是,popupWindow的布局文件长宽我设置为160*42(dip)




代码解析:

这边我使用的是 showAtLocation(view,int,x,y)  方法显示popupWindow,

其中view设置哪个都一样(意思是,不论设置哪个,popwindow的相对参照物都是整个屏幕的根布局)

那么参数二是影响最大的:

1.设置Gravity.NO_GRAVITY的话,就相对屏幕左上角作为参照(即原点[0,0]是屏幕左上角)

2.若设置Gravity.LEFT的话,则原点为 [0,1/2屏幕高],即[x=0,y=1/2屏幕高度];

其他的没测。


然后showAtLocation(view,int,x,y)方法的第三个、第四个参数则是popwindow的左上角坐标。

x+10等于向右移动,x-10等于向左移动;

y+10等于向下移动,x-10等于向上移动


再看我的例子图片,获取了view的坐标;

设置popupWindow的y跟view的y一样。

设置 popupWindow的x为:(view的x坐标-2*popwindow长),至于为什么是两个,我测不出来,理论是减去一个的。若有人大神看到,请留言告知。谢谢



续:

经过同事提醒,终于找到2*popwindow的长原因了,

如下:


不同的分辨率,显示不一样,调试模式下看到如下:




  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值