setSpan 是公共设置样式方法,通过fontStyle传参,设置对应的样式,例如设置加粗和斜体:
如果有,在getOldFontSytles 方法中,会进行判断移除;(因为假如选中有加粗,再设置一次就是取消)
span设置样式和 html 类似,是通过始末设tag来控制区间样式的,所以,你选中区间样式CD,可能与原有样式区间AB是包含,交集关系。因此,当你移除旧样式的时候,需要补始末的tag,这样才能保持未选中的区间样式不变。司马南近况代码getOldFontSytles后for 循环执行补tag 逻辑。
当非选中状态下,即光标移至某处,设置字体样式,随后输入的文字都是当前设置样式,需要判断start =end ,然后变更span设置mode 方式。需要使用SPAN_INCLUSIVE_INCLUSIVE。
目前原生 hmtl 能够支持进行html 解析,但是想做定制化的解析,需要对其进行修改。拷贝一份Html.java 为CustomHtml.java;
查看源码得知,html 将span html 是通过 withinParagraph方法,遍历当前控件样式CharacterStyle 数组,然后根据对应样式,加入对应css 标签(现在主流是style 方式, 目前我只是简单使用了常规html标签做样式控制,可以改)。
p.s.图片显示不出,因为径是手机本地,若需要,应当在转html时,先上传获得图片url,在赋值转html。
不过,对于一些简单的图文混排可以考虑使用自定义的方式,但是如果考虑三端统一,尤其是支持 PC 上编辑文章,移动端显示的,最好的方式还是去使用webview,主要是 PC 上的编辑器会插入非常多复杂的 html 标签,非常难解析。当然了 webview 自带很多兼容性问题,选择开源项目,一定要提前查看issue,避免最后踩坑,我之前就遇到过类似囧境(低版本无法删除img标签,最终通过调用 js 删除img)。返回搜狐,查看更多
网友评论 ()条 查看