如果我们在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。但我想改进此代码,因为它存在一些问题,例如锚链接无法正确显示。建议任何更好的技术(如果可用)
如果您看到androidx.webkit:webkit:1.3.0-beta01
更改日志,则可能会看到已添加ForceDark API以控制是否WebView
应在黑暗模式下呈现。您可以使用ForceDarkStrategy
API控制WebView
变暗(CSS / Web内容变暗与自动变暗)。
在尝试访问此功能之前,请确保正在使用Webview支持WebViewFeature
的isFeatureSupported()
功能。为此,该类具有一个函数,可用于检查是否支持给定的功能。因此,在我们继续设置暗模式支持之前,请检查是否支持:
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) { ... }
有3种不同的常量可供WebSettingsCompat
配置-
使用setForceDark
功能相应地应用它-
WebSettingsCompat.setForceDark(webView.settings, WebSettingsCompat.FORCE_DARK_ON)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句