2012-03-08 19 views
3

Androidのwebviewでは、HTML5キャンバスを含むhtmlファイルを読み込みます。キャンバスにテキストを書くとき、それは非常に小さいです。同じhtmlファイルをPCブラウザまたはIOS上のWebビューで読み込むと、正しく表示されます。私が知る限り、私はズームを無効にしており、キャンバスはウェブビュー全体を満たしています。私はフォントサイズが他のブラウザで読み込まれたときと同じであると思います。何か案は? htmlファイルの先頭でiosとandroidでフォントサイズが異なる

は、ビューポートは次のように宣言されます。ページがある後

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

htmlファイルのボディに
<meta name='viewport' content='target-densitydpi=device-dpi,initial-scale=1.0,user-scalable=no'/> 

、キャンバスは次のように宣言されています私は動的にキャンバスを画面いっぱいに調整します。

答えて

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をチェックすることであれば、他のICS /事前ICSにそれらの両方をラップすることができます。偉大な説明のためのhttp://developer.android.com/guide/practices/screens_support.html

+0

ありがとう:

は、ここでさらに密度について読んでいくつかあります。 –

関連する問題