初始化popuWindow
PopupWindow popupWindow = new PopupWindow(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
View inflate = View.inflate(context, R.layout.popu_add_friend, null);
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
//必须添加一个背景,任意颜色的背景都可以
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setContentView(inflate);
单独说一下这三个属性
popupWindow.setFocusable(true);
👆这个属性表示popuWindow弹出以后,是否获取焦点,如果设置为true,那么当popuWindow弹出的时候,Activity中的其他控件就无法获取焦点,例如Activity中的按钮不能点击,列表无法滑动...,只有popuWindow可与用户交互
popupWindow.setOutsideTouchable(true);
👆这个属性表示设置popuwindow外部的区域是否可触摸。
如果设置为true,那么当点击popuWindow外面区域时,popuWindow会自动消失。设置为false,那么点击那么当点击popuWindow外面区域时,popuWindow不会消失。
该属性默认为false
注意👇
该属性要想生效(即点击popuWindow外部,让popuWindow消失),必须给popuWindow添加一个背景,任意颜色的背景都可以,代码如下👇
popupWindow.setBackgroundDrawable(new BitmapDrawable());
另外,这个属性强调的是点击popuWindow的外部,如果你的popuWindow很大,例如不小心把popuWindow的宽高指定为了MATCH_PARENT,那么你的触摸区域就会始终在popuWindow的内部,此时无论你怎么点击屏幕,popuWindow都无法自动消失。
显示popuWindow
在某个View下面显示popuWindow👇
popupWindow.showAsDropDown(view);
这个方法有重载,读者自行测试即可。
让popuWindow消失👇
popupWindow.dismiss()
判断popuWindow是否是显示状态👇
popupWindow.isShowing()
给popuWindow设置消失的监听
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
}
});
完!