今天运行一个很久之前做的项目的时候,发现界面变成了这个样子,就是一个普通的popwindow

popupwindow showAsDropDown 无效解决方法_showAsDropDownpopupwindow showAsDropDown 无效解决方法_showAsDropDown_02

然后用了一下低版本手机测试是显示正常的,搜索相关资料,发现是Android7.0 及以上手机有这个问题

原来的代码:

    mPopupWindow.showAsDropDown(view);

   view是显示到哪个控件下面就放哪个view,不多解释。

现在的代码:

PopWindowUtil.showAsDropDown(mPopupWindow,view,0,0);
package com.jky.mobilebzt.util;

import android.graphics.Rect;
import android.os.Build;
import android.view.View;
import android.widget.PopupWindow;

public class PopWindowUtil {

public static void showAsDropDown(final PopupWindow pw, final View anchor, final int xoff, final int yoff) {
if (Build.VERSION.SDK_INT >= 24) {
Rect visibleFrame = new Rect();
anchor.getGlobalVisibleRect(visibleFrame);
int height = anchor.getResources().getDisplayMetrics().heightPixels - visibleFrame.bottom;
pw.setHeight(height);
pw.showAsDropDown(anchor, xoff, yoff);
} else {
pw.showAsDropDown(anchor, xoff, yoff);
}
}
}

现在的效果:

popupwindow showAsDropDown 无效解决方法_pop showAs_03popupwindow showAsDropDown 无效解决方法_showAsDropDown_04

很普通的一个问题,但是项目时间长了没发现就很尴尬。好了,很简单,就不多废话了。

希望对大家有所帮助。欢迎各位小伙伴加入我的qq群:开发一群:454430053 开发二群:537532956 (付费)开发三群:812695329(免费)这里已经有很多小伙伴在等你了,快来加入我们吧!