在安卓WebView中,如果在夜间模式下无法正确加载HTML中的CSS,可能是由于WebView默认使用的是白天模式的样式,而夜间模式下的样式与之不一致造成的。为了解决这个问题,你可以尝试以下解决方法:
webview_style.xml
,并在其中定义WebView的样式。在这个样式中,你可以设置WebView在夜间模式下使用的CSS样式。
WebView webView = findViewById(R.id.webview);
// 获取当前系统的夜间模式设置
int nightModeFlags = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
// 如果是夜间模式,则应用自定义样式
if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:(function() { " +
"var css = 'body { background-color: #000; color: #fff; }';" +
"var style = document.createElement('style');" +
"style.innerHTML = css;" +
"document.head.appendChild(style);" +
"})()");
}
});
webView.setBackgroundColor(Color.BLACK);
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
// 加载HTML页面
webView.loadUrl("file:///android_asset/my_page.html");
在上述代码中,我们首先获取当前系统的夜间模式设置,如果是夜间模式,则在WebView的onPageFinished
方法中插入一段JavaScript代码,用于动态添加CSS样式到HTML页面中。同时,我们还调整了WebView的背景颜色和渲染方式,以保证在夜间模式下显示正确的样式。
以上是一种解决安卓WebView在夜间模式下无法正确加载HTML中的CSS的方法,你可以根据实际需求进行调整和扩展。