gpt4 book ai didi

Android Nougat PopupWindow showAsDropDown(...)重力不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:20:34 26 4
gpt4 key购买 nike

我有这个代码。

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 Nougat 上完美运行。但在 Android Nougat 中,弹出窗口显示在屏幕顶部,而不是相对于 anchor View 。

最佳答案

这似乎是 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();

Google 将在未来的版本中修复此错误。还有一个最终的解决方法。创建pop时需要给定高度。

PopupWindow popup = new PopupWindow(contentView, with, height);

如上init pop,只能用 popUp.showAsDropDown(anchorView) 显示这个弹出窗口。这样就可以忽略Android API的版本。

关于Android Nougat PopupWindow showAsDropDown(...)重力不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39673099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com