您的位置:首页 > 移动开发 > Android开发

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

2017-08-02 15:23 501 查看
网上方法:

@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吗???哎,每个版本都悄悄挖几个坑,这是难为我们这些吃老本的了。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息