我隐藏了键盘。如果我立即使我的 View 可见,键盘上方的 View 会一闪而过,然后下降到键盘的位置。
如果我等待键盘隐藏/显示并调整我的布局(使用我的全局布局的 onSizeChanged),然后尝试使我的 View 可见,在许多情况下系统不会正确地重新估计我的布局(也许因为我在布局更改生命周期的某个奇怪部分使 View 可见?) 所以在很多情况下,我最终都没有显示任何 View 。有时键盘上方应该隐藏 View 的地方有奇怪的空间。如果我执行 post(Runnable) 然后调用 requestLayout() 或使 View 在下一帧中可见,这并不好,因为闪烁当然又出现了。
所以基本上我想知道键盘何时调整我的 View 大小时的确切帧,以便我可以使它们可见/不可见并防止不同 View 结构/大小的闪烁。如果我等待 onSizeChanged,似乎为时已晚。
我真的希望系统能够正确运行并重新估计我的 View 大小并将它们放置在正确的位置,但如果在 onSizeChanged 中完成,它就无法正常工作。
最佳答案
我最终做了以下事情:
- 在隐藏部分屏幕和等待键盘出现之间禁用调整主屏幕大小
- 在显示键盘后启用调整大小(并触发调整大小)。
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (resizingEnabled) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } else { setMeasuredDimension(getWidth(), getHeight()); } }
关于Android:尝试用 View 替换键盘时如何防止 View 跳转/闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30721975/