1

これは私には不可解です。助けてください、私はそれを理解できませんでした...

私のサンプルhtmlファイルでは、メタタグを次のように設定しました

<meta name="viewport" content="target-densitydpi=device-dpi, user-scalable=no">

カスタムサイズの私のウェブビュー内にウェブページを収めるために、800x600と言います。Android では、「target-densitydpi=device-dpi」を指定する必要があり、うまく機能しました。カスタム Web ページを nexus 7 タブレットでテストしたところ、Web ページは Web ビュー内に正しく収まりました。

同じコードは Kindle Fire では機能しません。Web ページの一部しか表示されず、'initial-scale=1.0' を設定しても役に立ちませんでした。

プログラムでさまざまな設定を試しましたが、どちらも役に立ちませんでした。

webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setSupportZoom(true); 
webview.getSettings().setLoadWithOverviewMode(true);
webview.setInitialScale(1);
webview.getSettings().setUseWideViewPort(true);

ポインタはありますか?

4

2 に答える 2

0

Kindle-Fireはhdpiデバイスであるため、target-density = high-dpiを使用するか、533を明示的に設定する必要があります(Fire HDとNexus7は完全には一致しません)

http://developer.android.com/guide/webapps/targeting.html#ViewportDensity

于 2012-09-28T21:01:13.857 に答える
0

報告した問題の解決策を見つけました。zoomscale基本的に、ビューポートの寸法に基づいてオンザフライで計算する JavaScript ベースのソリューションを採用することになりました。私の場合、元の Web コンテンツは 1024x768 で作成されており、ズームされたコンテンツを表示するには 800x600 のビューポートが必要でした。

load()ドキュメントが読み込まれるときに関数を呼び出します。

<body style="position: relative; background: url('opt_background.jpg'); background-repeat: no-repeat; background-size: 100% auto;" onload="load()">

function load()
{
// This function gets the current view port width and height, computes an adjusted zoom scale and sets it.
var viewportWidth  = document.documentElement.clientWidth
var viewportHeight = document.documentElement.clientHeight  
var zoomScale = Math.ceil(viewportWidth * 100 / 1024);
document.body.style.zoom= zoomScale + "%";
}

それはトリックをしました。

于 2012-10-01T21:35:16.993 に答える