缩放 Android WebView 文本 html 以适应?

Scaling an Android WebView text html to fit?

我有一个数学方程式作为文本 WebView,无论其尺寸如何,我都需要适合整个屏幕。我这样做的第一个直觉就是在文本超出范围时简单地缩小文本,以便它保持约束, 但是,我找不到任何函数或方法来实际测量该 webview 的内容,我试过:

webview.getMeasuredHeight, webview.getHeight

但它们的问题是它们总是贴在 webview 小部件的大小上,而不是内容上,所以我搬到了:

webview.getContentHeight

这似乎有效,问题是它仅在文本为 "loaded" 后才有效,因此即使在 onPageFinished 中调用它,一开始也没有得到正确的答案。

我的问题是:

1) 有没有办法知道 TEXTUAL html webview 的内容大小?我什至希望知道指示大小的滚动条长度。

2) 是否有一个侦听器函数可以让我从文本实际加载的那一刻起就可以 运行 编码? webview 声明看起来像这样:

webView = (WebView) findViewById(R.id.webView);
        js = "<html><head>"
                + "<link rel='stylesheet' href='file:///android_asset/mathscribe/jqmath-0.4.3.css'>"
                + "<script src='file:///android_asset/mathscribe/jquery-1.4.3.min.js'></script>"
                + "<script src='file:///android_asset/mathscribe/jqmath-etc-0.4.3.min.js'></script>"
                + "</head><body>"
                + "<script>var s =   '$$" + functext + "$$';M.parseMath(s);document.write(s);</script> </body>";
        webView.loadDataWithBaseURL("", js, "text/html", "UTF-8", "");

文本不会立即加载,因此与其相关的代码通常存在缺陷。

3) 有没有webview.getContentWidth之类的?

编辑:

此代码可以帮助您使网页适合 webview。

webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setUseWideViewPort(true);

您必须计算比例以使内容适合屏幕。

private int getScale()
{
    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = display.getWidth(); 
    Double val = new Double(width)/new Double(Your_webpage_width);
    val = val * 100d;
    return val.intValue();
}

然后使用

WebView web = new WebView(this);
web.setPadding(0, 0, 0, 0);
web.setInitialScale(getScale());

2) 运行 webview 完全加载后,只需实现 WebViewClient 并扩展 onPageFinished() 如下:

mWebView.setWebViewClient(new WebViewClient() {

   public void onPageFinished(WebView view, String url) {
        // do your stuff here
    }
});