当前位置: 首页 > wzjs >正文

企业网站关键词程序员必知的网站

企业网站关键词,程序员必知的网站,商业网站规划,《营销型网站建设实战》Android WebView 深色模式适配方案总结 在 Android WebView 中适配深色模式(Dark Mode)是一个常见的需求,尤其是当加载的网页没有原生支持 prefers-color-scheme 时。本文将介绍 3 种主流方案,并分析它们的优缺点,帮助…

Android WebView 深色模式适配方案总结

在 Android WebView 中适配深色模式(Dark Mode)是一个常见的需求,尤其是当加载的网页没有原生支持 prefers-color-scheme 时。本文将介绍 3 种主流方案,并分析它们的优缺点,帮助开发者选择最佳实现方式。


方案 1:JS 动态注入 CSS(适合任意网页)

核心思路

通过 JavaScript 动态插入 CSS,强制修改网页的背景、文字颜色等样式。

代码实现(Kotlin)

fun applyDarkMode(webView: WebView, isDarkMode: Boolean) {val css = if (isDarkMode) {"""html, body, body * {background-color: #1a1a1a !important;color: #e0e0e0 !important;}/* 隐藏某些元素 */#ad-container { display: none !important; }"""} else {"""html, body, body * {background-color: #ffffff !important;color: #000000 !important;}"""}val js = """var style = document.createElement('style');style.innerHTML = `${css.replace("\n", "")}`;document.head.appendChild(style);""".trimIndent()webView.evaluateJavascript(js, null)
}

调用时机

webView.webViewClient = object : WebViewClient() {override fun onPageFinished(view: WebView?, url: String?) {applyDarkMode(webView, isDarkMode)}
}

优缺点

优点

  • 适用于任何网页(包括第三方网页)。
  • 可精细控制特定元素的样式(如隐藏广告)。

缺点

  • 可能受 CSP(内容安全策略)限制,导致注入失败。
  • 部分网页可能因 CSS 优先级问题无法覆盖默认样式。

方案 2:强制 WebView 深色渲染(API 29+)

核心思路

Android 10 (API 29) 引入了 WebSettingsCompat.FORCE_DARK,可让 WebView 自动适配深色模式。

代码实现

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {WebSettingsCompat.setForceDark(webView.settings,if (isDarkMode) WebSettingsCompat.FORCE_DARK_ON else WebSettingsCompat.FORCE_DARK_OFF)
}

适配网页

网页需支持 prefers-color-scheme

/* 深色模式适配 */
@media (prefers-color-scheme: dark) {body {background: #121212;color: #f0f0f0;}
}

优缺点

优点

  • 系统级支持,兼容性较好(适用于支持 prefers-color-scheme 的网页)。
  • 无需手动注入 CSS,减少代码维护成本。

缺点

  • 仅适用于 API 29+。
  • 如果网页未适配 prefers-color-scheme,可能渲染异常。

方案 3:拦截并修改网页内容(高级方案)

核心思路

通过 WebViewClient.shouldInterceptRequest 拦截 HTML/CSS,动态替换样式。

代码示例

webView.webViewClient = object : WebViewClient() {override fun shouldInterceptRequest(view: WebView?,request: WebResourceRequest?): WebResourceResponse? {if (request?.url?.toString()?.endsWith(".css") == true) {// 修改 CSS 内容val darkCss = """body { background: #1a1a1a !important; }""".trimIndent()return WebResourceResponse("text/css","UTF-8",ByteArrayInputStream(darkCss.toByteArray()))}return super.shouldInterceptRequest(view, request)}
}

优缺点

优点

  • 可深度定制网页样式,甚至替换整个 CSS 文件。
  • 不受 CSP 限制,适用于严格安全策略的网页。

缺点

  • 实现复杂,需处理各种资源加载情况。
  • 可能影响网页功能(如动态加载的样式)。

最佳实践推荐

方案适用场景兼容性实现难度
JS 注入 CSS任意网页,需动态调整样式所有版本⭐⭐
WebView 强制深色网页已支持 prefers-color-schemeAPI 29+
拦截修改网页需要深度定制样式所有版本⭐⭐⭐

推荐方案

  1. 优先检查网页是否支持 prefers-color-scheme,如果支持,使用 方案 2FORCE_DARK)。
  2. 如果网页不受控(如第三方页面),使用 方案 1(JS 注入 CSS)。
  3. 如果需要更高级控制(如企业定制页面),可尝试 方案 3(拦截修改)。

总结

在 Android WebView 中实现深色模式,主要有 动态注入 CSS系统强制深色渲染拦截修改网页 三种方式。选择方案时需考虑:

  • 网页是否可控(能否修改 CSS?)
  • Android 版本兼容性(是否需要支持旧版?)
  • 是否需要精细控制(如隐藏广告、修改字体等)

如果你的网页可控,建议直接使用 prefers-color-scheme + FORCE_DARK;如果是第三方网页,JS 注入 CSS 是最稳妥的方案。


文章转载自:

http://yYMF6cEO.zLwmt.cn
http://1ASWMVKk.zLwmt.cn
http://SxagVgfi.zLwmt.cn
http://VS5ac8zd.zLwmt.cn
http://2eiVQG2U.zLwmt.cn
http://bYYpl3rT.zLwmt.cn
http://ySaxagKP.zLwmt.cn
http://SnLO5lK8.zLwmt.cn
http://yyU8bgx5.zLwmt.cn
http://u6cBqrpN.zLwmt.cn
http://4T4sWO5v.zLwmt.cn
http://cGi2qo6G.zLwmt.cn
http://s6FoED4g.zLwmt.cn
http://aLtCSilQ.zLwmt.cn
http://emEZEWuY.zLwmt.cn
http://Q2jV1tEJ.zLwmt.cn
http://a54Fya3E.zLwmt.cn
http://YS9fW3Xv.zLwmt.cn
http://4wjhlTcz.zLwmt.cn
http://Cb1Lomsh.zLwmt.cn
http://aSW4COPF.zLwmt.cn
http://dUMnmt3R.zLwmt.cn
http://e8Flahrx.zLwmt.cn
http://QwZBcXUq.zLwmt.cn
http://rLXAwRT6.zLwmt.cn
http://eTM9Kb2H.zLwmt.cn
http://dDx5ch38.zLwmt.cn
http://3lf5kTGP.zLwmt.cn
http://zCWVmQv7.zLwmt.cn
http://GNbFMnyJ.zLwmt.cn
http://www.dtcms.com/wzjs/631972.html

相关文章:

  • 15年做哪些网站能致富舟山大昌建设集团网站
  • 大连seo建站公司泉州网站优化排名推广
  • 建设零售网站网站建设中如何兼容所有浏览器
  • 自己做的网站如何加视频教程计生网站生育文明建设
  • 网站开发好学不网站外链建设与维护
  • 浙江台州网络设计网站汶上网站制作
  • 网站上线前做环境部署无法使用wordpress
  • 中国建设监理协会网站个人会员系统自己做网站自己买服务器
  • 做网站有必要虚拟主机网站建设过程
  • 购物手机网站怎么做网站建设费和网站维护费的区别
  • h5互动网站建设做电商网站需要多少时间
  • 专业网站定制价格网站开发 招标采购参数
  • 网站开发入哪个会计科目wordpress前台注册登陆
  • 有了网站开发app是不是更容易技术支持 东莞网站建设洋酒回收
  • .net网站开发实训wordpress分享卡片插件
  • 国外网站页面做多大个人直播网站怎么做
  • 网站建设公司创业广州网站公司制作网站
  • 建设婚恋网站基本功能有哪些东城东莞网站建设
  • 视频网站备案广告资源发布平台
  • 西安商城网站建设咪豆苏中建设集团官方网站
  • 织梦后台点击网站主页网站地图深度做多少合适
  • 恩施网站优化理发美发培训学校
  • 上海网站建设觉策网站建设账户搭建
  • 英国电商网站wordpress 自定义主题
  • 宁波建网站公司深圳市做网站的公司
  • 做公司网站的公司有哪些做网站大公司
  • 外贸网站建设公司青岛wordpress商品采集器
  • 新站加快网站收录青海网站开发
  • 企业网站flash学校网站策划书
  • 网站开发与管理专业静宁县建设局网站