扩展Android WebView文本html以适应?

时间:2015-11-05 18:06:34

标签: android android-studio webview jqmath

我有一个数学方程式作为文本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之类的东西?

1 个答案:

答案 0 :(得分:0)

修改

此代码可以帮助您将wepage配合到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
    }
});