android popupWindow 在android 7.0上显示缺陷

来源:互联网 发布:医学大数据分析工资 编辑:程序博客网 时间:2024/05/17 04:19

android popupWindow 在android 7.0上显示缺陷

一: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     public void showAsDropDown(View anchor) {        if(Build.VERSION.SDK_INT == 24 && anchor!=null) {            Rect rect = new Rect();            anchor.getGlobalVisibleRect(rect);            int h=anchor.getResources().getDisplayMetrics().            heightPixels -rect.bottom;                                    setHeight(h);        }        super.showAsDropDown(anchor);    }
阅读全文
1 0
原创粉丝点击