5

我在这里遇到了同样的问题。基本上我在垂直线性布局中有 text-webview-text ,如下所示:

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

webview 有一个缩放开关,当内容放大时,webview 会调整到更大的尺寸并下推 textview:

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

直到现在一切都很好。问题是,当我缩小到较小的尺寸时,webview 内的内容会缩小,但 webview 本身仍然是相同的大小,留下一个很大的空白空间:

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

我的问题也与类似。调用 invalidate() 不起作用,我不想在不破坏活动的情况下重新创建片段(我实际上不知道如何)。我的问题是,当我将 webview 从大缩放到小时,如何更新/调整 webview 的高度?(注意:我动态添加所有视图,所以请告诉我如何以编程方式解决它。谢谢)

这个奇怪的问题在 Froyo 2.2 中不存在,但在 JB 4.2.2 真实设备中是一个错误问题。

4

1 回答 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/上的解决方案修改

于 2018-03-02T03:15:48.233 回答