通过单击外部键盘解除键盘后,AdjustResize不起作用

Mdl*_*dlc 6 keyboard android webview

我有一个WebView(在带有SlidingTabLayout的ViewPager中的片段内).

使用WebView进行输入时,我希望调整布局以确保输入可见.

单击WebView中的文本输入时,将显示软键盘并调整布局大小.我可以输入我的文本并使用软键盘的返回按钮提交或使用后退按钮取消输入.在此之后,键盘消失,布局调整大小.正确的AdjustResize行为.

但是,当通过在软键盘外部单击来解除键盘时(例如,在Google中输入查询并按下WebView中的"搜索"按钮)键盘会隐藏,并且布局调整大约需要2-3秒(留下空白区域)在我的布局底部2-3秒).之后,在选择textinput时,键盘将覆盖WebView(adjustPan).

如何确保通过按WebView关闭键盘时,adjustResize可以保持行为.

我尝试重新设置AdjustResize(例如来自onTouch),但这没有效果:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下解决方案,但这没有任何改变.

此外,我认为这可能不是一个焦点问题(因为键盘确实出现了,webview确实响应).我确实从我的观点中提出焦点:

    webView.setFocusable(true);
    webView.setFocusableInTouchMode(true);
Run Code Online (Sandbox Code Playgroud)

Mdl*_*dlc 0

事实证明,当您在 WebView 上执行布局转换或间接更改 WebView 的布局时(例如,在relativelayout中调整 WebView 上方的元素大小时,会导致 WeView 也调整大小),显示和隐藏键盘可能会导致一些奇怪的行为:

  • AdjustResize 行为可能会丢失(如问题所示)
  • 键盘后 WebView 调整大小可能需要比正常时间更长的时间。
  • WebView的性能下降

对我来说解决这个问题的是,以任何方式防止 WebView 中的布局更改(旋转时布局重新加载似乎不会导致此问题)。就我而言,我显示和隐藏工具栏导致 WebView 调整大小(并填充屏幕)。