发现某些机型会因为导航栏隐藏的而使得popupwindow的位置变化。
这里建议使用
popupwindow.setClipToScreenEnabled(true)
将popupwind 铺满屏幕,再调整位置。这样就不会因为底部导航栏隐藏引起位置不对了
但是又有坑了,setClipToScreenEnabled 是隐藏API对于没有隐藏api的jar包开发人员编译器会报错,特别是多人开发的情况,有的可以运行有的不能运行。
只有使用反射来搞了,代码如下:
/**
* 修复某些机型虚拟导航栏收起导致的popupwindow错位
* @param popupWindow
*/
public static void setOffsetBug(PopupWindow popupWindow){
try {
Method method = PopupWindow.class.getMethod("setClipToScreenEnabled", boolean.class);
method.invoke(popupWindow, true);
} catch (Exception e) {
e.printStackTrace();
}
}
网友评论