Android studio PopupWindow 可以在模拟器中运行,但不能在设备上运行
Android studio PopupWindow works in emulator but not on device
PopupWindow 在 AVD 中显示并完美运行,但在真实设备上却不行。
这是应该创建弹出窗口的函数:
http://pastebin.com/jabHVp2c
我尝试了什么:
我确保调用了 onClick,确实如此。
为了以防万一,我确保层次结构中没有其他视图被剪裁,甚至无法点击。
问题似乎是在我向弹出窗口添加动画后出现的,但将它们注释掉没有任何区别,并且如前所述,它确实在模拟器中按预期工作。
AppAPI级别为15,AVDAPI级别为23,设备为LG G3运行API23.
popupWindow.setWindowLayoutMode(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
popupWindow.showAtLocation(rootView, Gravity.CENTER, 0, 0);
popupWindow.update();
这解决了问题。
显然 "update()" 是必需的,尽管它在模拟器上没有它也能工作,而且我不知道它在几个版本之前的设备上是如何工作的。
希望这对某人有所帮助。
我认为@Max 的回答绝对正确,但是popupWindow.update();
不是必需的,相反 popupwindow.showAtLocation()
可以正常工作。
PopupWindow 在 AVD 中显示并完美运行,但在真实设备上却不行。
这是应该创建弹出窗口的函数:
http://pastebin.com/jabHVp2c
我尝试了什么:
我确保调用了 onClick,确实如此。
为了以防万一,我确保层次结构中没有其他视图被剪裁,甚至无法点击。
问题似乎是在我向弹出窗口添加动画后出现的,但将它们注释掉没有任何区别,并且如前所述,它确实在模拟器中按预期工作。
AppAPI级别为15,AVDAPI级别为23,设备为LG G3运行API23.
popupWindow.setWindowLayoutMode(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
popupWindow.showAtLocation(rootView, Gravity.CENTER, 0, 0);
popupWindow.update();
这解决了问题。 显然 "update()" 是必需的,尽管它在模拟器上没有它也能工作,而且我不知道它在几个版本之前的设备上是如何工作的。
希望这对某人有所帮助。
我认为@Max 的回答绝对正确,但是popupWindow.update();
不是必需的,相反 popupwindow.showAtLocation()
可以正常工作。