前提:使用“在顶部”一词时,我指的是“叠加”,具有“更高的z-index”,可以说;使用“以上”一词时,我指的是“视觉上在屏幕上方”。
我想问题应该是“如何在对话框显示时在键盘上方显示PopupWindow?”。接下来是情况...
我正在使用此库在我的应用程序中拥有类似Whatsapp样式的emojicons。 它显示软键盘位置的emojicons的方式是通过在其上方显示一个
要创建emojicon的弹出窗口,我需要将一个
我已经尝试通过更改windowSoftInputMode并将PopupWindow的"InputMethodMode"设置为PopupWindow.INPUT_METHOD_NOT_NEEDED来解决问题,但结果始终相同。
为了创建和显示弹出窗口,该库只需调用
当键盘打开时。 你可以从我在开头写的链接中查看库的源代码,这里有一个关于此问题的公开问题,以防它可能包含额外的有用信息。 感谢帮助。
我想问题应该是“如何在对话框显示时在键盘上方显示PopupWindow?”。接下来是情况...
我正在使用此库在我的应用程序中拥有类似Whatsapp样式的emojicons。 它显示软键盘位置的emojicons的方式是通过在其上方显示一个
PopupWindow
,使其完全覆盖它。要创建emojicon的弹出窗口,我需要将一个
View
传递给构造函数。 我尝试传递两个不同的视图,但都无法工作。 这里是发生的事情:
如果我传递对话框的根视图(使用
getRootView()
),弹出窗口不会出现在键盘上方,而是出现在对话框上方。调试后,我明白了这是因为对话框的根视图并不占据整个屏幕,而是恰好占据对话框的大小。我原以为它会更大,因为对话框背后的暗淡背景占据了整个屏幕。我错了。
弹出窗口可以交互,并且按照预期工作。如果我传递包含对话框的活动的根视图,弹出窗口不仅出现在对话框和暗淡背景的后面(因此无法进行交互),而且还出现在键盘上方! 这是一个截图:
我已经尝试通过更改windowSoftInputMode并将PopupWindow的"InputMethodMode"设置为PopupWindow.INPUT_METHOD_NOT_NEEDED来解决问题,但结果始终相同。
为了创建和显示弹出窗口,该库只需调用
public class EmojiconsPopup extends PopupWindow ... {
...
setSize(LayoutParams.MATCH_PARENT, keyBoardHeight);
...
showAtLocation(rootView, Gravity.BOTTOM, 0, 0);
...
}
当键盘打开时。 你可以从我在开头写的链接中查看库的源代码,这里有一个关于此问题的公开问题,以防它可能包含额外的有用信息。 感谢帮助。
getRootView()
,但没有任何变化。 - nonzaprej