Android上显示富文本,并适配深色模式方案

Android上显示富文本,并适配夜间深色模式方案

 在工作中有遇到这样的需求,需要把hmtl的富文本内容,进行深色模式适配。原先的富文本内容是在直接在webview上进行展示。

解决思路:替换html中的内容色值。

方案一:

 直接使用replace进行字符串替换,当时是去判断

标签,例如下代码

newText.replace("<p>", "<p><span style=\"color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);\">")

存在问题:

 替换字符串存在很大的问题,如果原本

标签就是已有色值那就会出现问题。所以我这边还是寻找到另外一种方案。

方法二:

 在assets中写一个空白页的html文件,html中实现createTable函数,用于接收富文本内容,加载到table标签中,然后在createTable中执行标签识别,添加色值或者替换色值的操作。是否是深色主题的标签可以在Url上拼接获取。
 经过测试该方面完美解决问题,后续需求变得也方便添加和修改。
下面贴上代码:

<script type="text/javascript">
			var type = getQueryString('type');

			//获取<body>标签,跟换背景
			if (type == 1) {
    
			    document.body.style.backgroundColor = "#1F1832";
			} else {
    
			    document.body.style.backgroundColor = "#F7F8F9";
			}

			function createTable(text) {
    
			        var table = document.getElementById("table");
			    //获取<body>标签,跟换背景
			    table.innerHTML = text
			        //获取p标签,插入添加内容
			        var list = document.getElementsByTagName("P");
			    for (var i = 0; i < list.length; i++) {
    
			        var spans = list[i].getElementsByTagName
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值