前回は、WebSettings でWebView のページ全体を表示したが、ズーム機能を無効にできなかったので、別の方法でチャレンジした。
やり方は単純で、初期スケールを View に与えるだけだ。前回同様に、WebView を継承したクラスのコンストラクタで、初期スケールを与えた。LOGO_WIDTH と LOGO_MARGIN_WIDTH は、それぞれページの幅と左右に与えたいマージンを定義している。
public HogeWebView(Context context) { super(context); DisplayMetrics metrics = getDisplayMetrics(context); float scale = 100 - (metrics.xdpi / (LOGO_WIDTH + LOGO_MARGIN_WIDTH)) * 100; setInitialScale((int) scale); ... }
setInitialScale()は WebView に用意されたメソッドで、引数はパーセント指定になる。指定しない場合、ワイドビューポートが有効になっていればズームアウトした状態で、指定していなければ100%を指定した場合と同じになる。
getDisplayMetrics は、WindowManager からディスプレイの情報を取得して戻しているだけだ。getDisplayMetrics は、static なメソッドにできるので、実際には自分で作成したユーティリティの中に入れて、static なメソッドで定義している。
private DisplayMetrics getDisplayMetrics(Context context) { DisplayMetrics metrics = new DisplayMetrics(); WindowManager windowManager = (WindowManager) context .getSystemService(Activity.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); display.getMetrics(metrics); return metrics; }
これで、WebView でズームを禁止した状態で、ページ全体を表示することができた。