android 多个popupwindow从左到右排序每个间隔都是50,如何用popupwindow的偏移实现,int算法没有当前位置
时间: 2024-03-10 22:49:37 浏览: 53
如果当前的popupwindow数量不确定,你可以通过获取anchorView的位置,以及popupWindow的宽度来计算每个popupwindow的偏移量。
具体来说,可以通过以下代码获取anchorView在屏幕上的位置:
```
int[] location = new int[2];
anchorView.getLocationOnScreen(location);
int anchorX = location[0];
int anchorY = location[1];
```
然后,可以通过以下代码获取popupWindow的宽度:
```
popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.getContentView().measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int popupWidth = popupWindow.getContentView().getMeasuredWidth();
```
接着,可以根据上面的算法计算出每个popupwindow的偏移量:
```
int xOff = 50 * (n-1) + popupWidth * (n-1);
int yOff = 0;
popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, anchorX + xOff, anchorY + yOff);
```
这样,每个popupwindow就会按照从左到右的顺序排列,并且它们之间的间隔都是50。同时,由于考虑了popupWindow的宽度,所以即使当前位置改变,偏移量也会正确计算。
阅读全文