近日发现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的长原因了,
如下:
不同的分辨率,显示不一样,调试模式下看到如下: