0

まず、WebViewをスクロールできるようにしたいのですが、スクロールによってWebViewが画面に合わせてレイアウトを再配置しないように、画像のように動作する必要があります。ページが画面よりも実際に大きい場合は、スクロールバーを提供する必要があります。

ズーム中にAndroidWebViewがコンテンツをラップしないようにする方法を読みましたか?。ダブルタップ以外は動作します。

問題を再現するには、
次の手順に従います。1.テキストでいっぱいのWebページをフルスクリーンWebViewにロードします。
2.画面の右側をダブルタップします。<-ここではズームインするだけです。問題ありません。3
。画面の左側をダブルタップします。

問題が発生します。テキストが再配置されます。元の縮尺にズームバックしたとき。テキストは画面の半分に表示されます。

何が起こっていても、webViewを停止してレイアウトを再配置するにはどうすればよいですか?

4

1 に答える 1

11

私はついにこの行でこれを解決します。

webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);

デフォルトでは、WebSettings.LayoutAlgorithmはですNARROW_COLUMNS

android.webkit.ZoomManagerクラスを研究することにより、必要に応じてリフロー(再配置)するNARROW_COLUMNS必要があり、それ以外の場合はリフローします。「必要なもの」が何であるかはわかりませんが、少なくとも私の場合はもうリフローしません。

いくつかのオフトピックがありますが、私の目標はコンテンツのリフローを防ぐことです。Android 2.xデバイスでは、設定されていてもzoomControlボタンをクリックすると、WebページのコンテンツがリフローすることがありますwebView.getSettings().setUseWideViewPort(true);。Android4では、この問題は発生しません。

もし私の考え違いでなければ。これはウェブページのメタタグが原因だと思います。したがって、Webページに次の行がないことを確認します。この行がない<meta name="viewport" content="width=device-width">と、Webコンテンツがリフローしないという違いが実際にわかります。

于 2013-01-17T07:37:42.163 に答える