如何在Android WebView中强制显示深色网页?

查坦亚·卡尔马克(Chaitanya Karmarkar)

如果我们在android的chrome浏览器中启用chrome:// flags /#enable-force-dark标志,则网页会变暗。

我想在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);
      }

现在,我接近了大约相同的深色网页,例如chrome。但我想改进此代码,因为它存在一些问题,例如锚链接无法正确显示。建议任何更好的技术(如果可用)

Anoop M

如果您看到androidx.webkit:webkit:1.3.0-beta01更改日志,则可能会看到已添加ForceDark API以控制是否WebView应在黑暗模式下呈现。您可以使用ForceDarkStrategyAPI控制WebView变暗(CSS / Web内容变暗与自动变暗)。

在尝试访问此功能之前,请确保正在使用Webview支持WebViewFeatureisFeatureSupported()功能。为此,该类具有一个函数,可用于检查是否支持给定的功能。因此,在我们继续设置暗模式支持之前,请检查是否支持:

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

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

  • FORCE_DARK_OFF –禁用Web视图的强制暗模式,这意味着Web视图的内容将按原样呈现
  • FORCE_DARK_ON –为Webview启用强制深色模式,这意味着Webview的内容将始终以深色主题呈现
  • FORCE_DARK_AUTO –根据父视图的状态为Webview启用强制黑暗模式,这意味着呈现WebView的内容时将遵循系统黑暗模式设置。

使用setForceDark功能相应地应用它-

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何在Android中显示多个通知

来自分类Dev

如何在Android的GridView中显示ArrayList

来自分类Dev

Android如何在Fragment中显示DatePicker?

来自分类Dev

如何在Android中从WebView创建PDF?

来自分类Dev

如何在webView Android中居中显示内容?

来自分类Dev

如何在Android中显示WebView

来自分类Dev

如何在Android中离线加载网页

来自分类Dev

在WebView android中检测空白网页

来自分类Dev

如何在Android的ListView中显示YouTubePlayerView?

来自分类Dev

如何在Android ExoPlayer中显示字幕

来自分类Dev

如何在Android中自动执行Webview

来自分类Dev

如何在Android中显示YouTube视频?

来自分类Dev

如何在Android中显示图片视图?

来自分类Dev

如何在Android中检测深色照片

来自分类Dev

如何在Android中显示片段

来自分类Dev

如何在Android Studio上强制应用深色主题?

来自分类Dev

如何在Android WebView中显示Gyfcat iframe

来自分类Dev

如何在React代码中强制更新组件以将深色主题切换为浅色主题

来自分类Dev

如何在android中显示数字?

来自分类Dev

如何在android中显示特殊字符

来自分类Dev

如何在Android中从WebView创建PDF?

来自分类Dev

如何在Android的WebView上加载网页?

来自分类Dev

如何在WebView Android中获取网页的颜色

来自分类Dev

如何在Android中离线加载网页

来自分类Dev

在WebView Android中检测空白网页

来自分类Dev

在WebView中覆盖网页样式-Android

来自分类Dev

如何在android webview中显示网页的某些部分?

来自分类Dev

如何在 Android 上的 webView 中显示视频

来自分类Dev

如何在 Qmainwindow 中显示网页?