[Android] 端末設定の文字サイズを変更してもWebView内のテキストサイズを固定にする

端末設定の文字サイズを最大とかにするとレイアウトが崩れたりする。
本当だったら崩れても問題ないデザインにしたり、レイアウトを組んだりする。

ただどうしようもないところはTextView等のテキストサイズをsp指定からdp指定にする。
dp指定にすることによって文字サイズ設定によって文字サイズは変わらなくなる。

ただ、、、。これはアプリ(ネイティブ)内で実装しているところに限る。
WebView内のコンテンツのテキストサイズは変わってしまう。

WebView内のテキストサイズを変更しない方法は多分2つ。

・WebコンテンツのCSSをイジイジしてもらって文字サイズが変更されないようにしてもらう

・アプリ側で頑張る

本当だったら前者でCSSをイジイジしてもらったほうが良いんだと思う。
ただイジイジしてもらえない環境の場合、アプリ側で頑張るしか無い。

ということで、アプリ側で頑張る方法。
頑張るって言ったって、1行の修正で済むのだがw

// WebView内のテキストサイズを100%指定にする
webView.settings.textZoom = 100

これだけでWebView内のテキストサイズが固定になる。
ただsetTextZoom()のJavaDocに気になる記載が。。。

    /**
     * Sets the text zoom of the page in percent. The default is 100.
     *
     * @param textZoom the text zoom in percent
     */
    public abstract void setTextZoom(int textZoom);

デフォルトは100で設定されているらしい。
コードで100に設定しても変わらないんじゃないか??と思ってしまうが、問題なかった。

abstractのメソッドのせいかそこまでコードは追えなかったんだけど、予想ではWebView生成時にテキストサイズは100 ✕ densityDpiがされているんじゃないかなと。

で、生成後に100に設定してやることでdensityDpi分がなくなるのかな?と。あくまで予想だけど。

一応、Android OS9〜OS13の5端末で試したけど、問題なかった。多分この方法で合ってる。

ということで、WebView内のテキストサイズを固定にしたい人いたら参考にどうぞ。

コメント

タイトルとURLをコピーしました