0

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

webview.getMeasuredHeight, webview.getHeight

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

webview.getContentHeight

这似乎有效,问题是它仅在文本“加载”后才有效,因此即使在 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 或类似的东西?

4

1 回答 1

0

编辑:

此代码可以帮助您将网页与网页视图相匹配。

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
    }
});
于 2015-11-05T18:19:26.317 回答