2012-03-08 40 views
3

在Android的webview中,我加載了一個包含HTML5畫布的HTML文件。在畫布上寫文字時,它非常小。如果我在PC瀏覽器中加載相同的html文件,甚至在IOS上加載web視圖,它看起來都是正確的。據我所知,我已禁用縮放,並且畫布填充整個Web視圖。我希望字體大小與在其他瀏覽器中加載的字體大小相同。有任何想法嗎?ios和android上的字體大小不同

在HTML文件的頭部,視口被聲明爲:

<meta name='viewport' content='target-densitydpi=device-dpi,initial-scale=1.0,user-scalable=no'/> 
在html文件的主體

,畫布被聲明爲:

<canvas id='rtmc_canvas' style='position:relative; left:0px; top:0px;'/> 

的頁面後,加載,我動態調整畫布以填充屏幕。

回答

4

您將密度設置爲1.0,並告訴Android的WebView在您以特定方式聲明視口時不會縮放任何東西。您可以刪除該視口聲明,然後會導致圖像縮放以及字體,或者可以基於用戶運行應用程序的Android設備修改WebView的文本大小設置。我會假設你想要做後者。

您需要先計算設備的密度。你可以用這段代碼來做到這一點:

float density = getResources().getDisplayMetrics().density; 

然後你可以調整密度的字體大小。如果密度是1.0,那麼它是中等密度(mdpi),> = 1.5是高密度(hdpi),> = 2.0是超高密度(xhdpi)。

如果您正在使用ICS,那麼它具有的WebView一個很好的API:

webView.getSettings().setTextZoom(100 * density); 

如果您正在使用ICS預設備,那麼你必須使用if/else語句來檢查上面再密度使用:

if (density < 1.5) { 
    // mdpi: 
    webView.getSettings().setTextSize(WebSettings.TextSize.NORMAL); 
} else if ((density >= 1.5) && (density < 2.0)) { 
    // hdpi: 
    webView.getSettings().setTextSize(WebSettings.TextSize.LARGER); 
} else { 
    // xhdpi: 
    webView.getSettings().setTextSize(WebSettings.TextSize.LARGEST); 
} 

或者更好的是,你可以通過檢查Build.VERSION.SDK_INT在if ICS /其他預包裝ICS這兩個的。

下面是關於密度的一些進一步閱讀:http://developer.android.com/guide/practices/screens_support.html

+0

感謝您的好解釋。 – 2012-03-16 23:17:54