android 多个popupwindow从左到右排序每个间隔都是50,如何用popupwindow的偏移实现
时间: 2024-03-10 09:49:34 浏览: 136
要实现android多个popupwindow从左到右排序每个间隔都是50,可以使用PopupWindow的偏移量来实现。
首先,你需要计算每个popupwindow的偏移量。假设第一个popupwindow的x坐标为50,第二个为100,以此类推,那么每个popupwindow的x坐标应该为50 * (n-1),其中n为当前popupwindow的位置。
接着,在创建每个popupwindow时,设置它的偏移量,例如:
```
popupWindow.showAsDropDown(anchorView, xOff, yOff);
```
其中,xOff为水平方向的偏移量,可以根据上面计算出的值来设置。
完整的示例代码如下:
```
int xOff = 50 * (n-1);
int yOff = 0;
popupWindow.showAsDropDown(anchorView, xOff, yOff);
```
这样,每个popupwindow就会按照从左到右的顺序排列,并且它们之间的间隔都是50。
相关问题
android 多个popupwindow从左到右排序每个间隔都是50,如何用popupwindow的偏移实现,int算法没有当前位置
如果当前的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的宽度,所以即使当前位置改变,偏移量也会正确计算。
android popupwindow依次间隔50从左到右,无需确定当前XY,与popupwindow数量
要实现android多个popupwindow从左到右排序每个间隔都是50,可以使用PopupWindow的偏移量来实现,无需确定当前XY和popupwindow数量。
首先,你需要维护一个变量来表示当前已经显示了多少个popupwindow,假设该变量为n。
然后,在创建每个popupwindow时,设置它的偏移量,例如:
```
int xOff = 50 * n;
int yOff = 0;
popupWindow.showAsDropDown(anchorView, xOff, yOff);
```
其中,xOff为水平方向的偏移量,可以根据当前显示的popupwindow数量来计算。
在显示完当前的popupwindow之后,将n加1,表示下一个popupwindow的偏移量需要加上50。
完整的示例代码如下:
```
int n = 0;
// 创建第一个popupwindow
PopupWindow popupWindow1 = new PopupWindow(view1, width1, height1);
int xOff1 = 50 * n;
int yOff1 = 0;
popupWindow1.showAsDropDown(anchorView, xOff1, yOff1);
n++;
// 创建第二个popupwindow
PopupWindow popupWindow2 = new PopupWindow(view2, width2, height2);
int xOff2 = 50 * n;
int yOff2 = 0;
popupWindow2.showAsDropDown(anchorView, xOff2, yOff2);
n++;
// 创建第三个popupwindow
PopupWindow popupWindow3 = new PopupWindow(view3, width3, height3);
int xOff3 = 50 * n;
int yOff3 = 0;
popupWindow3.showAsDropDown(anchorView, xOff3, yOff3);
n++;
```
这样,每个popupwindow就会按照从左到右的顺序排列,并且它们之间的间隔都是50,而且不需要确定当前的位置和popupwindow数量。
阅读全文