簡體   English   中英

如何在 android webview 中強制深色 web 頁面?

[英]How to force dark web pages in android webview?

如果我們在 android 上的 chrome 瀏覽器中啟用chrome://flags/#enable-force-dark標志,那么 web 頁面會變暗。

我想在 android webview 中實現類似的東西(即深色 web ui)。

目前我正在使用以下代碼:

  private void injectCSS() {
        
       String code = "javascript:(function() {" +
                 "var node = document.createElement('style');"+
                 "node.type = 'text/css';"+
                   " node.innerHTML = 'body, label,th,p,a, td, tr,li,ul,span,table,h1,h2,h3,h4,h5,h6,h7,div,small {"+
                   "     color: #deFFFFFF;"+
                        "background-color: #232323;"+
                   " } ';"+
                   " document.head.appendChild(node);})();";

        webView.evaluateJavascript(code,null);
     
    }

我在以下位置運行此代碼:

    @Override
    public void onProgressChanged(WebView view, final int 
            newProgress) {
              super.onProgressChanged(view, newProgress);
              injectCSS();
             }

    @Override
    public void onPageStarted(final WebView view, String url, 
       Bitmap favicon) {
             injectCSS();
             super.onPageStarted(view, url, favicon);    
      }

   @Override
    public void onPageFinished(WebView view, final String url) 
      {
          injectCSS();
          super.onPageFinished(view, url);
      }

現在我接近同樣的深色 web 頁面,如 chrome。 但我想改進此代碼,因為它存在一些問題,例如無法正確顯示錨鏈接。 建議任何更好的技術(如果有)

如果您看到androidx.webkit:webkit:1.3.0-beta01更改日志,您會看到添加了 ForceDark API 以控制WebView是否應在暗模式下呈現。 您可以使用ForceDarkStrategy API 來控制WebView變暗(CSS/Web 內容變暗與自動變暗)。

在嘗試訪問此功能之前,請確保它受正在使用的 Webview 支持。為此, WebViewFeature class 有一個isFeatureSupported() ZC1C425268E68385D1AB5074C17A94F14 是否支持該功能。 因此,在我們提前 go 並設置對暗模式的支持之前檢查是否支持:

if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) { ... }

WebSettingsCompat中有 3 個不同的常量可供配置 -

  • FORCE_DARK_OFF – 禁用 webview 的強制暗模式,這意味着 webview 的內容將按原樣呈現
  • FORCE_DARK_ON – 為 webview 啟用強制黑暗模式,這意味着 webview 的內容將始終以黑暗主題呈現
  • FORCE_DARK_AUTO – 根據父視圖的 state 為 webview 啟用強制暗模式,這意味着在渲染 Z5A98E2840FD014178D4D854E 的內容時將遵循系統暗模式設置。

使用setForceDark函數相應地應用它-

WebSettingsCompat.setForceDark(webView.settings, WebSettingsCompat.FORCE_DARK_ON)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM