2015-11-05 93 views
0

我有一个数学公式作为一个文本WebView,我需要适合整个屏幕,无论它的尺寸如何。我的第一个直觉就是这样简单地收缩文本,只要它超出边界以便它仍然受到约束,但是,我找不到任何函数或方法实际上衡量的WebView内容,我已经试过:缩放Android WebView文本html以适合?

webview.getMeasuredHeight, webview.getHeight 

但他们的问题是,他们不断地贴在web视图控件的大小,而不是在内容上,所以我搬到:

webview.getContentHeight 

这似乎工作,问题是它只适用于af如果文本是“已加载”的,所以即使它在onPageFinished中调用,它也不会得到正确的答案。

我的问题是:

1)是否有办法知道的文本HTML网页视图的内容大小?我甚至会很高兴知道滚动条的长度来表示大小。

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或类似的东西?

回答

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)要运行的东西后,网页流量已经完全加载,只需要实现WebViewClient和扩展onPageFinished()如下:

mWebView.setWebViewClient(new WebViewClient() { 

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

那里有这样一个问题:我无法知道网页的宽度,因为它根据数学公式展开和缩回,高度也一样... –

+0

您可以尝试一下您的网页的实际宽度 –

+0

允许我澄清:宽度将根据等式不断变化,并且上面列出的函数(如getMeasuredWidth)都不会测量它,因为它会测量实际的webview窗口小部件。我不知道我的宽度,我想知道如何衡量它......另外,我已经说过,在我的“网页”加载后,onPageFinished似乎不会被调用,因为它在被调用时仍然是空白的原因 –