一:popupWindow 简析
1、含义
Popwindow就是Android上自定义的一个弹出窗口,是在当前activity的顶部的,可以在任意的位置显示,在显示的时候会阻塞UI线程。
2、构造
Popwindow可以直接通过构造方法获取
new PopupWindow(View contentView,intwidth,intheight,booleanfocusable)
构造方法有很多,但是要确保contentview ,width,hight的设置,否则Popwindow不会显示任何内容
这些参数也都可以单独进行设置,比如 popwindow.setContentView(contentView);
3、解析
popwindow的难点就在于这几个参数的设置,一般容易使人迷惑。
popupWindow1.setFocusable(true);//获取焦点
popupWindow1.setOutsideTouchable(true);//获取外部触摸事件
popupWindow1.setTouchable(true);//能够响应触摸事件
popupWindow1.setBackgroundDrawable(newColorDrawable(0x8f000000));//设置背景
二:popupWindow 7.0缺陷
由于popupWindow是一个比较成熟的弹出框的控件,广泛运用于android app项目设计中。
在使用showAsDropDown时候我们会发现 原本显示中部的popupWindow,变成了顶部或者底部,整个app呈现显示错乱的方式。不仅造成了显示错乱,在一些业务app中更是容易造成一些数据加载错乱和崩溃问题。 解决办法最简单是继承 popupWindow的子类中重写 showAsDropDown()方法,由于谷歌在7.1版本以及更新了这个缺陷补丁,所有只需要在sdk24时候做判断。
@Override
publicvoidshowAsDropDown(View anchor) {
if(Build.VERSION.SDK_INT ==24&& anchor!=null) {
Rect rect =newRect();
anchor.getGlobalVisibleRect(rect);
inth=anchor.getResources().getDisplayMetrics().
heightPixels -rect.bottom;
setHeight(h);
}
super.showAsDropDown(anchor);
}