我在具有
的Activity中的ScrollView上有一个EditTextandroid:windowSoftInputMode="adjustResize"
集。
我正在尝试将另一个(弹出)视图锚定到EditText,如果输入了无效文本,则会显示该视图。
为了锚定它,
EditView.getLocationOnScreen();
被调用。到现在为止还挺好。
但是当弹出视图出现时我也解除键盘,如果EditText在键盘上方移动以进行文本输入,则EditText会向下移动到原始位置,但弹出窗口会出现在EditText所在的位置(当键盘正在显示。) 如果我在键盘关闭之前和之后使用(getLocationOnScreen())为EditText记录位置点,我可以看到它们是相同的。
我的问题 - 键盘解除后有没有办法更新EditText位置?
如果有帮助,我正在使用https://github.com/lupidan/PopoverView作为弹出窗口,但对我来说这是该代码之外的问题。
答案 0 :(得分:2)
比使用从不同平台模拟控件的库更好的选择是使用已经内置到Android SDK中的内容。 PopupWindow
(docs links)允许您提供相同的功能,并将内容正确锚定到EditText
视图。它可以像活动或对话一样传递内容视图,因此API更加一致。
当您使用PopupWindow
显示showAsDropDown()
时,框架会在滚动等操作时将锚点位置保持为提供的视图。