PopupWindow的showAsDropDown

844 阅读1分钟

方法如下,参数为依附的view,x轴,y轴偏移

public void showAsDropDown(View anchor, int xoff, int yoff){}

我遇到的问题是有一个View,位于屏幕右边边界,但是距离右边有一点距离,大概20dp;要在他的下方显示一个popupWindow,本来挺顺风顺水的,但是除了一个问题,就是popupWindow始终贴着右边界,我尝试修改这个xoff,但是也挺小心的,大概就是10到200这样的试,但是没效果

原来是这样的规则:使用showAsDropDown这个方法,他的位置就是popupWindow的ContentView和anchor左下角保持一致

当依附的view在屏幕右侧时,如果PopupWindow的左边要和view的左边对齐,就会超出屏幕,所以为了杜绝这种情况,PopupWindow就会紧贴着屏幕的右边。

解决方法就是: 我们把他的x轴方向的偏移量往左平移一个popupWindow的宽度,这样规则就变成了View的左下角和popupWindow的右上角“无缝衔接了”

代码如下

popupView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
window.showAsDropDown(view, -popupView.getMeasuredWidth() + view.getWidth(), 0);

参考blog.csdn.net/xiey94/arti…