Android Android PopupWindow 概述
1、简述
简单点说,popputWindow 只是一个小弹框
2、PopWindow 的创建
2.1 、PopupWindow的构造函数
//方法一:
public PopupWindow (Context context)
//方法二:
public PopupWindow(View contentView)
//方法三:
public PopupWindow(View contentView, int width, int height)
//方法四:
public PopupWindow(View contentView, int width, int height, boolean focusable)
也就是说 Popwindow 的创建方式有四种 , 在这里需要声明的是,无论哪一种创建方式来创建,都必需声明所创建Popwindow 的显示View 以及宽与高 .
2.2 、创建PopupWindow
// 1 、创建PopupWindow
PopupWindow pop = new PopupWindow (this);
// 2、设置显示视图
// 2.1、加载Popwindow 中使用的显示视图
View contentView = LayoutInflater.from(MainActivity.this).inflate(R.layout.pop_item_1, null);
// 2.2、设置视图
pop.setContentView(contentView);
// 3、设置宽度
pop.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
// 4、设置高度
pop.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
也就是说必需声明所创建Popwindow 的显示View 以及宽与高 .
3、PopupWindow 显示
3.1 、显示方式一
在某个View 的正下方显示
// 在控件view的正下方显示
pop.showAsDropDown(view);
3.2 、显示方式二 showAsDropDown(View anchor, int xoff, int yoff)
在某个View 的正下方显示 ,并且在 轴方向 与 y轴方向有偏移
在x 轴方向的偏移 xoff 为正向右偏移,为负向左偏移
在y 轴方向的偏移 yoff 为正向下偏移,为负向上偏移
// 在控件view的正下方显示 并向右偏移20px 向下偏移20px
pop.showAsDropDown(view,20,20);
3.3 、显示方式三 showAtLocation(View parent, int gravity, int x, int y)
相对于父控件显示
1 gravity 为相对于父控件显示的方式
Gravity.TOP --> 相对于父布局的顶部显示
Gravity.LEFT--> 相对于父布局的左边显示
Gravity.RIGHT--> 相对于父布局的右边显示
Gravity.BOTTOM -->相对于父布局的底部显示
Gravity.CENTER --> 相对于父布局的中心显示
Gravity.CENTER_HORIZONTAL--> 竖直方向中心</font>
Gravity.CENTER_VERTICAL --> 水平方向中 </font>
2 x 为 在x 轴方向的偏移 xoff 为正向右偏移,为负向左偏移
3 y 为 在y 轴方向的偏移 yoff 为正向下偏移,为负向上偏移
//相对于父控件的顶部显示 无任何偏移
pop.showAtLocation(mRootView,Gravity.CENTER,0,0);
当设置显示为相对于交布局的顶部显示 出来的时候 ,默认的是垂直剧中
//相对于父控件的左边显示 无任何偏移
pop.showAtLocation(mRootView,Gravity.LEFT,0,0);
//相对于父控件的右边显示 无任何偏移
pop.showAtLocation(mRootView,Gravity.RIGHT,0,0);
//相对于父控件的底部显示 无任何偏移
pop.showAtLocation(mRootView,Gravity.BOTTOM,0,0);
//相对于父控件的中心显示 无任何偏移
pop.showAtLocation(mRootView,Gravity.CENTER,0,0);
//相对于父控件左上角显示 无任何偏移
pop.showAtLocation(mRootView,Gravity.LEFT|Gravity.TOP,0,0);
//相对于父控件的左上角显示 在x轴方向向右偏移200的距离
pop.showAtLocation(mRootView,Gravity.LEFT|Gravity.TOP,200,0);
//相对于父控件左上角显示 在x轴方向向下偏移200的距离
pop.showAtLocation(mRootView,Gravity.LEFT|Gravity.TOP,0,200);
... ... ...