PopupWindow使用问题总结

本文详细介绍了如何使用PopupWindow,包括创建、设置属性如背景、触摸响应等,以及如何正确显示和定位PopupWindow,并提供了监听消失事件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 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 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值