2012-01-01 26 views
0

私はAndroidのwebviewを使用して、DOMが準備ができているときにJavaScriptが実行されている状態でいくつかのHTMLを表示しています。しかし、screen.widthは、エミュレータと実際のデバイス上でクエリを実行する前にタイムアウトを使用していない限り、間違った値を返します。Android webview javascriptのバグ

高密度/低密度のデバイスに問題があります。例えば、高密度の480×800のサイズのデバイスは、320×533のスクリーン(スクリーンの幅と高さの両方を1.5で割る)をもたらし、低密度のサイズ240×320のスクリーンの場合、320×426を与える(再び、幅と高さともに0.75)。

身体の幅を100%に設定すると、身体の幅が320pxに設定され、半分後にもう一度設定されるため、実際のサイズは480pxになるため、ちらつきます。いくつかのCSSを適用する前に、画面の幅と高さを照会するためにタイマーを使う

異なるデバイス上のことから、異なる時間間隔は(300ミリ秒、500ミリ秒)必要とされ、容認できない - 私は適用することができますどのように異なる画面でCSSはサイズ

エミュレータ:

FWQVGA (240×432, low density, normal screen) 
HVGA (320×480, medium density, normal screen) 
WVGA800 (480×800, high density, normal screen) 

この問題の解決方法はありますか?

+0

http://developer.android.com/reference/android/webkit/WebView.html @。あなたはもっと多くの情報を見つけることができましたか? – zaf

答えて

2

デフォルトでは、WebViewは、中密度の画面でデフォルトの外観と一致するサイズで描画されるようにWebページを拡大/縮小します。そのため、高密度スクリーン(ピクセルが小さいため)では1.5倍のスケーリングが適用され、低密度スクリーン(ピクセルが大きいので)では0.75xスケーリングが適用されます。

あなたはこれを読むかもしれない: 「建物のWebページを別の画面をサポートするために、」 私はASMEの問題を見ていると思う

+0

ああ、うんざりする - 申し訳ありませんが、間違った矢印を間違って押しました。マイナーな編集をしてエラーを取り除いて+1しなければならなかった。 – zaf

関連する問題