Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:当试图用视图替换键盘时,如何防止视图跳转/闪烁_Android_Keyboard - Fatal编程技术网

Android:当试图用视图替换键盘时,如何防止视图跳转/闪烁

Android:当试图用视图替换键盘时,如何防止视图跳转/闪烁,android,keyboard,Android,Keyboard,我把键盘藏起来了。如果我立即使我的视图可见,则在键盘上方会有一个视图的闪光,然后它会下降到键盘的位置 如果我等待键盘隐藏/显示并调整我的布局(全局布局的大小已更改),然后尝试使我的视图可见,在许多情况下,系统不会正确地重新估计我的布局(可能是因为我在布局更改生命周期的某个奇怪部分使视图可见?) 所以在很多情况下,我最终没有显示任何视图。有时,在视图的位置上,键盘上方有一个奇怪的空间,应该隐藏起来。如果我执行post(Runnable),然后调用requestLayout(),或者让视图在下一帧中

我把键盘藏起来了。如果我立即使我的视图可见,则在键盘上方会有一个视图的闪光,然后它会下降到键盘的位置

如果我等待键盘隐藏/显示并调整我的布局(全局布局的大小已更改),然后尝试使我的视图可见,在许多情况下,系统不会正确地重新估计我的布局(可能是因为我在布局更改生命周期的某个奇怪部分使视图可见?) 所以在很多情况下,我最终没有显示任何视图。有时,在视图的位置上,键盘上方有一个奇怪的空间,应该隐藏起来。如果我执行post(Runnable),然后调用requestLayout(),或者让视图在下一帧中可见,这是不好的,因为闪烁当然又出现了

因此,基本上我想知道键盘调整视图大小的确切帧,这样我可以使它们可见/不可见,并防止不同视图结构/大小的闪烁。如果我等待onSizeChanged,似乎为时已晚


我真的希望系统能够正确运行,重新估计视图大小并将其放置在正确的位置,但如果在onSizeChanged中执行此操作,则无法正常工作。

我最终执行了以下操作:

  • 禁止在隐藏部分主屏幕和等待键盘显示之间调整主屏幕的大小
  • 显示键盘后启用调整大小(并触发调整大小)
  • @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (resizingEnabled) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        } else {
            setMeasuredDimension(getWidth(), getHeight());
        }
    }