LoginSignup
0
1

More than 3 years have passed since last update.

Webkit で WebView のダークテーマ対応をする

Posted at

概要

WebView でダークテーマを適用する方法について述べます。

なぜやるのか?

WebView でダークテーマに対応するには、従来だと手間のかかる実装をする必要がありました。最近出た Webkit 1.2.0 を使えば、そうした手間を削減することができます。


導入

依存の追加

Webkit の依存を追加します。1.2.0 以上を利用してください。

app/build.gradle
dependencies {
    implementation "androidx.webkit:webkit:1.2.0"

WebView に適用

WebViewFeature で "FORCE_DARK" に対応しているかを確認し、している場合に WebSettingsCompat のメソッドを1つ呼び出すだけです。

import androidx.webkit.WebSettingsCompat
import androidx.webkit.WebViewFeature

// 中略

    private fun applyDarkThemeIfNeed(webView: WebView) {
        if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
            WebSettingsCompat.setForceDark(
                    webView.settings,
                    WebSettingsCompat.FORCE_DARK_ON
            )
        }
    }

スクリーンショット

Name Description
FORCE_DARK_ON device-2020-03-10-092515.png
FORCE_DARK_OFF device-2020-03-10-092429.png

WebSettingsCompat の FORCE_DARK 系の定数

1.2.0 の段階では以下の3つがあります。

Name Description
FORCE_DARK_ON 常にダークテーマを適用
FORCE_DARK_OFF 常に通常のテーマを適用
FORCE_DARK_AUTO parent view のテーマに準拠

この機能は Android 8以下の端末でも設定が効くようなので、本来ダークテーマに対応していない端末向けにアプリの設定としてダークテーマを提供する際にも役立ちます。


参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1