【问题标题】:AdjustResize does not work after dismissing keyboard by clicking outside keyboard通过单击外部键盘关闭键盘后,AdjustResize 不起作用
【发布时间】:2015-09-06 18:41:55
【问题描述】:

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

使用 WebView 键入时,我希望调整布局大小以确保输入可见。

当我单击 WebView 中的文本输入时,软键盘出现并且布局调整大小。我可以使用软键盘的返回按钮输入文本并提交,或者使用返回按钮取消输入。之后,键盘消失,布局重新调整大小。纠正AdjustResize 的行为。

但是,当通过在软键盘外部单击来关闭键盘时(例如,在 Google 中输入查询并在 WebView 中按下“搜索”按钮时),键盘会隐藏,并且布局调整大小大约需要 2-3 秒(留下一个我的布局底部有 2-3 秒的空白)。之后,在选择TextInput时,键盘覆盖WebView(QuidingPan)。

如何确保在按下 WebView 关闭键盘时,adjustResize 行为保持不变。

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

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

我也试过following solution,但这并没有改变。

此外,我认为这可能不是焦点问题(因为确实出现了键盘,并且 webview 确实响应了)。我确实要求从我的观点中获得焦点:

    webView.setFocusable(true);
    webView.setFocusableInTouchMode(true);

【问题讨论】:

  • 我想创建一个新项目,复制并粘贴一些代码,看看您在我的设备上遇到的问题。您能否进行编辑以使这成为可能?
  • @NecipAllef 我已经发布了一些文件。但是,如果您愿意,我可以将我的完整项目发送给您。电子邮件(24 小时)l:m95YZL4xu2Sc@meltmail.com
  • 我看过您的 WebView 源代码,它大约有 1.2k 行代码,我相信其中大多数甚至与您的问题无关。如果您能提供一些代码,让我们能够观察到问题,而且不难编译或调试,您可以更快地获得帮助。所以我建议你创建一个示例项目并分享它。我相信通过 Github 是可能的。
  • @NecipAllef 是的,我会处理的。但是我仍然需要确定问题的原因是什么,所以我需要一段时间来创建这个项目。

标签: android webview keyboard


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-07
    • 2014-10-19
    • 1970-01-01
    • 2018-01-23
    • 2017-01-15
    • 2015-01-02
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多