- popupwindow点击事件
- popupwindow显示大小
- popupwindow显示位置
popupwindow ## 标题点击事件
// 用于PopupWindow的View
View contentView=LayoutInflater.from(context).inflate(layoutRes, null, false);
// 创建PopupWindow对象,其中:
// 第一个参数是用于PopupWindow中的View,第二个参数是PopupWindow的宽度,
// 第三个参数是PopupWindow的高度,第四个参数指定PopupWindow能否获得焦点
PopupWindow window=new PopupWindow(contentView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
// 设置PopupWindow的背景
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
// 设置PopupWindow是否能响应外部点击事件
window.setOutsideTouchable(true);
// 设置PopupWindow是否能响应点击事件
window.setTouchable(true);
// 显示PopupWindow,其中:
// 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移
window.showAsDropDown(anchor, xoff, yoff);
// 或者也可以调用此方法显示PopupWindow,其中:
// 第一个参数是PopupWindow的父View,第二个参数是PopupWindow相对父View的位置,
// 第三和第四个参数分别是PopupWindow相对父View的x、y偏移
// window.showAtLocation(parent, gravity, x, y);
只有设置popupWindow背景和外部点击事件,popupWindow才能真正的响应外部点击事件,这是当你点击外部和back返回键时,popupWindow才会消失。
监听popupWindow消失事件,能够处理popupWindow消失后界面的变化,例如给界面添加阴影背景显示消失。
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {//监听popupWindow窗口消失
@Override
public void onDismiss() {
LogUtil.e("popupWindow","onDismiss");
}
});
popupwindow显示大小
popupWindow显示大小,受版本和手机型号的影响,PopupWindow window=new PopupWindow(contentView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);。
popupwindow显示位置
// 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移
window.showAsDropDown(anchor, xoff, yoff);
// 或者也可以调用此方法显示PopupWindow,其中:
// 第一个参数是PopupWindow的父View,第二个参数是PopupWindow相对父View的位置,
// 第三和第四个参数分别是PopupWindow相对父View的x、y偏移
// window.showAtLocation(parent, gravity, x, y);
显示的位置应为版本和手机的问题会错位,比如设置高超出能够显示的位置时,会影响描点位置。
解决方案
高度不能超出能够显示的位置,背景view设由界面显示,设置popupWindow的消失监听,当界面消失时,取消背景view 。