WebView 不调整大小

2023-11-22

我已经为 Firefox OS 开发了一个 Web 应用程序,但我想让它在 Android 中“本地”运行。我的应用程序由一个对话框组成div它在可见时填充整个页面,我使用 Firefox 响应式设计工具对其进行了测试,并且它确实可以正确调整大小。当出现软键盘时,我希望对话框调整大小以适应剩余的视口,因为对话框底部有一些按钮。

我创建了一个具有单个活动的应用程序,其中仅包含WebView。我想在键盘出现时调整视图大小,所以我使用了:

android:windowSoftInputMode="stateUnspecified|adjustResize"

这似乎没有任何区别WebView当键盘可见时。我在网上查了一下,有很多人抱怨这个问题,但他们都有一个共同点,他们都在使用Theme.Black.NoTitleBar.Fullscreen主题,而我不是。我尝试了该问题的所有解决方案,但没有一个有效。

然后我就开始怀疑是不是有bugWebView这意味着它没有调整大小。所以,我写了一个自定义View打印尺寸onLayout.

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    Log.d(TAG, t + " " + r + " " + b + " " + l);
}

果然,当键盘出现和消失时,视图的大小被正确调整。所以,我做了更多研究,发现了一些答案,表明你需要隐藏WebView,重新加载,然后再次显示。

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    Log.d(TAG, t + " " + r + " " + b + " " + l);

    mWebView.setVisibility(View.GONE);
    mWebView.layout(l, t, r, b);
    mWebView.invalidate();
    mWebView.reload();
    mWebView.setVisibility(View.VISIBLE);
}

同样,这并没有解决我的问题。 (顺便说一句,这是一个带有单个 .html 文件的 Web 应用程序,JS 会导致应用程序中所有元素的状态在运行时发生变化,因此重新加载它不是一个选项。)

我的问题是是否有人知道调整大小的方法WebView一旦内容加载完毕,键盘可见。


这并不完全是您问题的答案,但您还会注意到,WebView 在变大时会重新调整大小,但在内容高度减小时不会减小,正如我已经回答过这个问题一样:WebView height = wrap_content 改变字体大小不起作用

Google 的问题跟踪器上引用了该错误/功能:https://code.google.com/p/android/issues/detail?id=18726

请不要责怪我,我只是想指出您在使用 WebView 时可能遇到的其他问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebView 不调整大小 的相关文章

随机推荐