Android7.0上PopupWindow的showAsDropDown位置问题 参数无效

来源:互联网 发布:oracle删除数据恢复 编辑:程序博客网 时间:2024/04/27 15:20

网上方法:

@Override    public void showAsDropDown(View anchor) {        if(Build.VERSION.SDK_INT >= 24) {            Rect rect = new Rect();            anchor.getGlobalVisibleRect(rect);            int h = anchor.getResources().getDisplayMetrics().heightPixels - rect.bottom;            setHeight(h);        }        super.showAsDropDown(anchor);    }

但是没有效果,其实方法是ok的,没效果是因为

new MyPopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
初始化时设置了充满屏幕,所以后面的位移就没有了效果。

其实我们可以通过计算屏幕高度减去topView的Y值来计算pop的所需高度,达到填充慢屏幕的效果:

int[] location = new int[2];lineSelect.getLocationOnScreen(location);//lineSelect是一个view,表示显示在她的上方int y = location[1];popHeight = App.instance.getSCHeight() - y;
初始化时:

mPopupWindow_job = new MyPopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, popHeight);


我想这就是为什么很多人对网上给出的重写showAsDropDowm()方法质疑的原因了

不过7.0以上为什么会出现这样的问题呢,这是bug吗???哎,每个版本都悄悄挖几个坑,这是难为我们这些吃老本的了。。。。


阅读全文
1 0