PopupWindow(悬浮框)
Android的对话框有两种:AlertDialog和PopupWindow。它们的不同点在于:
AlertDialog的位置固定,是非阻塞线程的,
PopupWindow位置随意,是阻塞线程的。
1.常用方法
setContentView(View contentView):设置PopupWindow显示的View
getContentView():获得PopupWindow显示的View
setAnimationStyle(int):设置动画效果
showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等)
可以设置偏移或无偏移
setTouchable(boolean touchable):设置PopupWindow是否响应touch事件,默认是true
如果设置为false,所有PopupWindow上的touch事件无响应
setFocusable(boolean):是否具有获取焦点的能力,默认为false
1.如果为false,editText等控件将无法获取焦点(不可编辑)
2.如果为true,即pop获取焦点,返回键被拦截(如果setBackgroundDrawable,点击返回pop.dismiss)
setOutsideTouchable(boolean):PopupWindow以外的区域是否可点击(点击外部区域pop.dismiss)
需mPopWindow.setBackgroundDrawable(newBitmapDrawable());
(因为bg不为null会加一层ViewContainer,并对返回键做了处理:点击pop.dismiss)