Android WebView在底部添加了奇怪的空白空间

Haw*_*awk 6 javascript android webview

我正在尝试为加载的WebView使用添加更多空白空间JavaScript.

loadDataWithBaseUrl()String资源加载数据.然后,在测量了一些内容之后,我需要制作WebView更大的内容,例如100像素.所以我用javascript函数调用loadDataWithBaseUrl():

mWebView.loadUrl("javascript:addHeight()");
Run Code Online (Sandbox Code Playgroud)

Javascript 函数在原始HTML中定义:

function addHeight() { " +
    var elemDiv = document.createElement('div');
    elemDiv.style.cssText = 'height:100px;'; 
    document.body.appendChild(elemDiv); 
} 
Run Code Online (Sandbox Code Playgroud)

在此之后,WebView调整自身大小以适应新内容.但是,生成的高度不是originalSize + 100px,而是更大.我不知道问题出在哪里.我无法确定目标大小,因为它取决于附加的大小,div它将始终不同.

有人试过吗?你熟悉这种行为吗?

小智 2

找到了下一个解决方案。这里用到了JS回调。我希望这可以帮助你。这种大小变化应该比动态变化效果更好。

    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) {
    MyActivity.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            webView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density)));
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

请参阅此列表的第 4 段。祝你好运!

  • 使用 Android 5.1.1,似乎没有发生任何事情 - 设置 LayoutParams 根本不会更改 WebView。 (2认同)