解除键盘时,EditText位置不会更新

时间:2014-02-27 14:36:11

标签: android

我在具有

的Activity中的ScrollView上有一个EditText
android:windowSoftInputMode="adjustResize"

集。
我正在尝试将另一个(弹出)视图锚定到EditText,如果输入了无效文本,则会显示该视图。

为了锚定它,

EditView.getLocationOnScreen();

被调用。到现在为止还挺好。

但是当弹出视图出现时我也解除键盘,如果EditText在键盘上方移动以进行文本输入,则EditText会向下移动到原始位置,但弹出窗口会出现在EditText所在的位置(当键盘正在显示。) 如果我在键盘关闭之前和之后使用(getLocationOnScreen())为EditText记录位置点,我可以看到它们是相同的。

我的问题 - 键盘解除后有没有办法更新EditText位置?

如果有帮助,我正在使用https://github.com/lupidan/PopoverView作为弹出窗口,但对我来说这是该代码之外的问题。

1 个答案:

答案 0 :(得分:2)

比使用从不同平台模拟控件的库更好的选择是使用已经内置到Android SDK中的内容。 PopupWindowdocs links)允许您提供相同的功能,并将内容正确锚定到EditText视图。它可以像活动或对话一样传递内容视图,因此API更加一致。

当您使用PopupWindow显示showAsDropDown()时,框架会在滚动等操作时将锚点位置保持为提供的视图。