我有这个密码。

PopupWindow popUp = new PopupWindow();
popUp.setFocusable(true);
popUp.setOutsideTouchable(true);
popUp.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
popUp.setHeight(600);

popUp.setContentView(anchorView);
popUp.showAsDropDown(anchorView);
popUp.update();

而且它在android版本

最佳答案

这似乎是Android 7.0的一个漏洞。但你可以用
兼容方式。

PopupWindow popUp = new PopupWindow();
popUp.setFocusable(true);
popUp.setOutsideTouchable(true);
popUp.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
popUp.setHeight(600);

popUp.setContentView(anchorView);
  if (android.os.Build.VERSION.SDK_INT >=24) {
     int[] a = new int[2]; //getLocationInWindow required array of size 2
     anchorView.getLocationInWindow(a);
     popUp.showAtLocation(((Activity) mContext).getWindow().getDecorView(), Gravity.NO_GRAVITY, 0 , a[1]+anchorView.getHeight());
    } else{
     popUp.showAsDropDown(anchorView);
}

popUp.update();

谷歌将在未来的版本中修复这个bug。还有最后的解决办法。创建pop时需要给出高度。
PopupWindow popup = new PopupWindow(contentView, with, height);

init pop如上所述,您只能使用
popup.showasDropdown(主持人视图)显示此弹出窗口。这样,您就可以忽略android api的版本。

关于android - Android Nougat PopupWindow showAsDropDown(...)Gravity无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39673099/

10-11 22:51
查看更多