2015-11-05 147 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似乎不會被調用,因爲它在被調用時仍然是空白的原因 –