WebView在内容缩小时不会减少高度

5

我在这里也遇到了同样的问题基本上,我有一个垂直线性布局中的文本-Webview-文本,如下图所示:

 __________
| Textview |
|__________|
|  WebView | <-can zoom
|__________|
| TextView |
|__________|

Webview有一个缩放切换,当内容变大时,Webview会调整为更大的大小并将TextView推下:

 __________
| Textview |
|__________|
|          |
|          |
|  WebView |
|          |
|__________|
| TextView |
|__________|

目前为止一切都很好。问题在于,当我缩小回较小的尺寸时,webview内部的内容会缩小,但是webview本身仍然保持相同的大小,留下了一个巨大的空白区域:

 __________
| Textview |
|__________|
|  WebView |
|          |
|          |
|          |
|__________|
| TextView |
|__________|

我的问题与这个类似。调用invalidate()方法没有作用,而我不想重新创建片段而不销毁活动(实际上我不知道如何操作)。我的问题是,当我把WebView从大缩小到小时,如何更新/调整其高度?(注意:我将所有视图动态添加,因此请展示一下我如何通过编程解决它。谢谢)。

在Froyo 2.2中没有出现这种奇怪的问题,但在JB 4.2.2真实设备中出现了困扰。


这个问题的答案似乎是你正在寻找的。这正是我所需要的。 - jnrcorp
1个回答

0
将以下代码片段添加,它将在页面加载时设置webview的高度。
private void setupWebView() {
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
            super.onPageFinished(view, url);
        }
    });
    webView.addJavascriptInterface(this, "MyApp");
}

@JavascriptInterface
public void resize(final float height) {
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            ViewGroup.LayoutParams lp = webView.getLayoutParams();
            lp.width = getResources().getDisplayMetrics().widthPixels;
            lp.height = (int) (height * getResources().getDisplayMetrics().density);
            webView.setLayoutParams(lp);
        }
    });
}

基于https://capdroid.wordpress.com/2014/08/07/resizing-webview-to-match-the-content-size/的解决方案进行了修改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接