popupWindow 与 AlertDialog 区别
AlertDialog 创建时不能指定显示位置,默认显示在屏幕中间(通过设置WindowManager参数可以改变位置)。
PopupView 可以指定显示位置。
popupView构造函数详解
|
|
生成 popupWindow 最基本的三个条件是: contentView, width, height;
所以使用构造一、构造二来构造, 那么完整的代码应该是这样的:
|
|
为什么 popupWindow 一定要设置 contentView?
因为 PopupWindow 没有默认布局,它的布局需要通过我们自己设置才行。
为什么 popupWindow 一定要设置 width、height? contentView 布局不是包含了这些信息么?
// todo 写一篇关于 inflate 的文章。
popupView 常用函数:
|
|
setTouchable(boolean touchable)
设置 PopupView 是否响应 Touch 事件,默认是 true , 如果设置为 false, 所有的 touch 事件都没有响应, 包括点击事件。setFocusable(boolean focusable)
设置 PopupView 是否具有获取焦点的能力,默认是 false。 一般来说,普通控件不需要获取焦点,但是 EditText 例外, 如果不能获取焦点,不能输入。setOutsideTouchable(boolean touchable)
设置 PopupView 以外的区域是否可点击, 也就是指 如果点击 PoppupView 以外的区域是否会消失。特别注意,在setOutsideTouchable(boolean touchable) 之前要调用设置背景:
12mPopWindow.setBackgroundDrawable(new BitmapDrawable());mPopWindow.setOutsideTouchable(true);setBackgroundDrawable(Drawable background)