1.popupWindows的创建,有四种方法,可以通过构造函数new出来
//方法一: 需要传上下文参数
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)
2.常用的一些方法
setContentView(View view): //设置弹窗的布局
setWidth()//设置弹窗的宽度,可以设为ViewGroup.LayoutParams.MATCH_PARENT或者ViewGroup.LayoutParams.WRAP_CONTENT
setHeight()//设置弹窗的宽度,可以设为ViewGroup.LayoutParams.MATCH_PARENT或者ViewGroup.LayoutParams.WRAP_CONTENT
showAsDropDown(View anchor): //相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff)://相对某个控件的位置,;xoff表示x轴的偏移,正值表示向左,负值表示向右;yoff表示相对y轴的偏移,正值是向下,负值是向上;
showAtLocation(View parent, int gravity, int x, int y):
//相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移
setOutsideTouchable(boolean b);//设置弹窗布局意外的区域是否可以响应触摸事件
setFocusable(boolean b);//设置布局是否获取焦点
dismiss();//让弹出消失
setBackgroundDrawable(drawable);//设置弹窗的背景,不需要背景可以传null
3.设置动画
4.设置背景透明遮罩层
PopupWindow使用中的坑:
1.当设置Popupwindow的LayoutParmas为match_parent和match_parent后,设置popupwindow.showAtLocation(parentView,Gravity.Bottom,xOffset,yOffset)时,偏移量yOffset的值将会无效,并默认为0