PopupWindow总结

本文详细介绍了Android中PopupWindow的使用,包括如何避免WindowLeaked异常,PopupWindow与Dialog的区别,以及如何处理点击空白区域和返回键的行为。此外,还提到了PopupWindow设置动画的方法,包括显示和消失动画的实现。
摘要由CSDN通过智能技术生成

POP实战案例:

使得pop外有焦点,pop内也可以触发焦点:

//初始化pop窗口
popWindow = new PopupWindow(halfWidth + 50,
		LayoutParams.MATCH_PARENT);// 这里注意不要写height高度,会造成最后一项显示不全
View contentView = setPopView();
contentView.setFocusableInTouchMode(true);//支持pop内焦点,支持pop外焦点(需要popWindow.setFocusable(true)属性),兼容性不好后面改造
popWindow.setContentView(contentView);
popWindow.setFocusable(true);
//popWindow.setBackgroundDrawable(new BitmapDrawable());
ColorDrawable cd = new ColorDrawable(R.color.gray);
popWindow.setBackgroundDrawable(cd);
注意:
1. 关于popWindow.setFocusable(true/false);的兼容性问题,部分手机对于pop是false时,点击pop内可以触发焦点,有些机型不可以触发焦点
2. 如果使用子类extends于PopupWindow,那么在实例化该子类时,子类没有相关的构造函数处理宽和高,则宽和高需要手动设置,如:this.setWidth(w / 2 + 50); 
3. 在屏幕右上角处弹出,pop会全部展示在屏幕内
4. 关于pop宽度和高度,只要xml中子视图的父容器不是该xml的根容器,那么该父容器设置的具体数值大小有效,否则pop都是包裹效果。
(注意:上面的大小如果是match_parent或者wrap_content,最终结果还是包裹,DialogFragment也一样)
5. pop和dialog都不可被子类强转
6. 显示pop方法参考:
showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移
7. pop更新窗体方法:pop.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值