首页
学习
活动
专区
圈层
工具
发布

fromHtml方法在API级别28上不能正确地格式化html文本。

fromHtml方法是Android中的一个静态方法,用于将HTML格式的文本转换为Spanned对象。在API级别28及以下的版本中,该方法可以正确地格式化HTML文本。但是,在API级别28及以上的版本中,该方法被废弃,并且在处理某些HTML标签时可能会出现格式化错误的问题。

为了解决这个问题,可以使用Html.fromHtml(String source, int flags)方法来替代fromHtml方法。该方法需要传入一个flags参数,用于指定解析HTML文本时的行为。常用的flags参数值包括Html.FROM_HTML_MODE_LEGACY和Html.FROM_HTML_MODE_COMPACT。

  • Html.FROM_HTML_MODE_LEGACY:在API级别24及以上的版本中,该参数可以确保HTML文本的格式化与之前的行为保持一致。
  • Html.FROM_HTML_MODE_COMPACT:在API级别29及以上的版本中,该参数可以确保HTML文本的格式化与之前的行为保持一致,并且会尽可能地去除不必要的空格。

以下是一个示例代码,展示了如何使用Html.fromHtml(String source, int flags)方法来正确地格式化HTML文本:

代码语言:txt
复制
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    CharSequence formattedText = Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT);
} else {
    CharSequence formattedText = Html.fromHtml(htmlText);
}

在使用fromHtml方法时,需要注意以下几点:

  1. 在API级别28及以上的版本中,建议使用Html.fromHtml(String source, int flags)方法,并根据实际需求选择合适的flags参数值。
  2. 在API级别28及以下的版本中,可以继续使用fromHtml方法,但需要注意可能出现的格式化错误问题。
  3. 在处理HTML文本时,建议使用Spanned对象来保存格式化后的文本,以便在TextView等控件中正确地显示。

腾讯云相关产品中,与HTML文本处理相关的产品包括云函数(SCF)和内容分发网络(CDN):

  • 云函数(SCF):云函数是无服务器计算服务,可以通过编写函数代码来处理HTML文本的格式化等操作。详情请参考云函数产品介绍
  • 内容分发网络(CDN):CDN可以加速网站的访问速度,并提供HTML文本的缓存和分发服务。详情请参考内容分发网络产品介绍

以上是关于fromHtml方法在API级别28上不能正确地格式化HTML文本的解答。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用TextView实现富文本展示,点击断句和语音播报

Html.fromHtml() fromHtml重载两个方法,分别是: 1、Spanned android.text.Html.fromHtml(String source) //输入的参数为(html...格式的文本) 目前android不支持全部的html的标签,目前只支持与文本显示和段落等标签,对于图片和其他的多媒体,还有一些自定义标签不能识别。...,我们完全可以使用Html.fromHtml方法,传入html代码,最后返回Spanned 对象,在使用setText方法既可实现用TextView展示html类型的富文本。...图片处理 上一部分也说了,使用Html.fromHtml( )方法展示富文本的时候,某些自定义的标签和图片识别不了,也就是加载不出来。而我们的项目中没有自定义的特殊标签,最关键的就是图片的加载!...3、存在的问题及优化 这样存在一个问题,我们使用fromHtml加载html文本时,图片是同步加载,而加载网络图片和加载html是异步的,也就是说:在加载到图片之前,其他文本已经显示到界面上,所以需要我们再次设置

1.3K10

【Android】Span的使用

,Span是所有文本样式的基类,位于android.text.style.Span,是一个抽象类,里面的方法和属性用于控制文本的样式;在Span下,主要是由CharacterStyle,ParagraphStyle...具体的方法使用,遇到了在慢慢往里面补充(前方的路以后再来探索吧~~~) 类 可变文本 可变标记 数据结构 使用场景 SpannedString 不支持 不支持 线性数组 ①不准备在创建文本后修改标记 SpannableString...(htmlString, Html.FROM_HTML_MODE_COMPACT); test.setText(spanned); (2)效果 (3)Html.fromHtml 重要代码解析...——Html.fromHtml() 可以将 HTML 字符串转换为 Spanned 对象; 单参数方法已经被弃用了 flags标志参数分析(通过 Html.FROM_HTML_MODE_* 常量设置)...]传统的,旧版的 兼容旧版解析方式(默认) API 24+ FROM_HTML_OPTION_USE_CSS_COLORS 使用 CSS 颜色解析 API 32+

10010
  • 安卓 topic-字符串资源 string-resource

    尽管历史上被称作“数量字符串”(并且在 API 中也仍然这样叫),但数量字符串 只应用于表示复数。...方法会去除字符串中的所有样式信息。 这个问题的解决方法是编写带转义实体的 HTML 标记,在完成格式设置后,这些实体可通过 fromHtml(String) 恢复。...然后照常设置字符串格式,但还要调用 fromHtml(String) 以将 HTML 文本转换成带样式文本: Resources res = getResources(); String text =...(text); 由于 fromHtml(String) 方法将设置所有 HTML 实体的格式,因此务必要使用 htmlEncode(String) 对您用于带格式文本的字符串中任何可能的 HTML...您可以创建类似方法来进行其他类型的文本样式设置。

    1.1K10

    Android中Textview文字设置不同颜色、下划线、加粗、超链接

    在项目中会遇到在一行文字,部分需要不同的文字颜色、下划线以及超链接来展示,下面介绍两种方式实现: 1、SpannableString来实现 1)简介 对于给Textview设置不同颜色,就不得不提SpannableString...2)具体使用 给文本设置不同的样式是通过setSpan()方法来实现的,其中的具体样式根据参数来定义。...static Spanned fromHtml(String source) 从Html字符串中返回可显示的样式文本。...static Spanned fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) 从Html...(str)); 设置下划线如下 mTextView.setText(Html.fromHtml("已有账号,去"+""+"登陆"+"")); PS:如果不在HTML标签最前面加入其他HTML

    8.6K21

    TextView自定义下划线、点击弹框

    立马会想到使用TextView的fromHtml方法,给添加笔记的文本手动加标签,或者使用SpanString类的相关方法设置标签。 但是!...经过反复测试,无论使用何种下划线标签或者SpanString设置下划线,画出的下划线颜色始终和文本内容颜色一样,还不能随便定义颜色。更何况:我们需要在下划线最后加图标,并且能够点击。...要实现以上需求,应该从这几个方面入手: 文本展示,普通文本调用TextView的setText方法既可,如果是富文本,就使用TextView的fromHtml方法,至于图片如何展示,我在上一篇文章用TextView...然后就是在onDraw方法中对计算出的行进行逐行绘制,在最后一行的结束位置绘制笔记图标(小圆圈)。...03 — 文本显示 这里就不再重复累赘了,文本展示很简单: 调用setText或fromHtml方法既可。 04 — 颜色等属性设置 ?

    1.6K30

    【Android 应用开发】Android UI 设计之 TextView EditText 组件属性方法最详细解析

    绘制图像相关XML属性 绘图设置 : XML属性可以指定在TextView文本的 左, 右, 上, 下, 开始, 结尾 处设置图片, 还可以设置文本 与图片之间的间距; -- 在文本框四周绘制图片XML...属性 :  在文本框左边绘制指定图像 :android:drawableLeft; 在文本框右边绘制指定图像 :android:drawableRight; 在文本框上边绘制指定图像 :android...:drawableTop; 在文本框下边绘制指定图像 : android:drawableBottom; -- 设置图片方法 : setCompoundDrawablesWithIntrinsicBounds...显示的文本为密码 设置文本框是一个密码框 : 如果要设置显示的文本是密码的话, 那么显示出来的就是 "." , 不能显示具体的内容; -- XML属性 :android:password, 如果是密码的话...显示HTML效果页面 使用Html.fromHtml("")方法, 参数是html界面内容, 可以使用html标签设置文本效果; 例如可以使用Html.fromHtml("<font size='20'

    2K30

    TextView

    文本控件 显示富文本(URL、不同大小、字体、颜色的文本) 在TextView中预定义了一些类似HTML标签(不区分大小写),通过这些标签,我们可以使TextView控件显示不同的颜色、大小、字体的文字...不能将带有标签的字符串直接使用TextView.setText()的方法进行设置,需要使用Html.fromHtml()将带有标签的字符串转换成CharSequence对象,然后再使用TextView.setText...注意 在调用setText方法设置文本完成后,还需要调用 setMovementMethod方法设置一个MovementMethod对象。...解析src属性值的工作需要在ImageGetter对象的getDrawable方法中完成。 ImageGetter是个接口。使用过Html.fromHtml方法的如下重载形式会比较熟悉它。...这种方法需要将文本转换成为一个SpannableString或者SpannableBuilder对象,然后在SpannableString或者SpannableBuilder对象中使用setSpan方法将需要设置样式的文本转换成相应的

    1.9K20

    Loguru:更为优雅、简洁的Python 日志管理模块

    虽然logging 库采用的是模块化设计,可以设置不同的 handler 来进行组合,但是在配置上较为繁琐。同时在多线程或多进程的场景下,若不进行特殊处理还会导致日志记录会出现异常。...IDE 或终端运行时会发现,loguru 在输出的不同级别信息时,带上了不同的颜色,使得结果更加直观,其中也包含了时间、级别、模块名、行号以及日志信息。...format (str or callable, optional) :格式化模块,在发送到接收器之前,使用模板对记录的消息进行格式化。...('This is warn information') filter 配置日志过滤规则 如下,我们通过实现自定义方法error_only,判断日志级别,当日志级别为ERROR,返回TRUE,我们在add...information') 在 2021-3-28.log 日志中,我们可以看到仅记录了ERROR级别日志。

    15.7K32

    XML基础

    XML数据以纯文本格式进行存储,提供了一种独立软件和硬件的数据存储方法,使创建不同应用程序共享的数据变得更加容易。 (3)简化数据传输。 通过XML可以在不兼容的系统之间轻松交换数据。...Ø 不能以数字或标点符号开始。 Ø 不能以字符“xml”(或者XML、xml)开始。 Ø 不能包含空格。 (3)XML文档的属性。...(2)DOM级别2:在DOM级别1的基础上添加了样式表对象模型,并定义了操作文档样式信息的功能。同时,DOM级别2定义了一个事件模型,并提供对XML命名空间的支持。...1)DOM Level 2 Core:规定了访问和更改文档内容及结构的API,该API同时包含用于XML的接口。 2)DOM Level 2 HTML:规定了操作HTML文档结构和内容的API。...同时,规定了文档加载和保存、文档查看、文档格式化和关键事件。DOM Level 3建立在DOM Level 2核心之上。

    39010

    Java 编程要点之 IO 流详解

    这就是为什么 CopyBytes 可以确保每个流变量在调用前都包含了一个对象的引用。 何时不使用字节流 CopyBytes 似乎是一个正常的程序,但它实际上代表了一种低级别的 I/O,你应该避免。...除字符和行之外,有许多方法来构造文本的输入和输出。欲了解更多信息,请参阅 Scanning 和 Formatting。...扫描(Scanning)和格式化(Formatting) 扫描和格式化允许程序读取和写入格式化的文本。 I/O 编程通常涉及对人类喜欢的整齐的格式化数据进行转换。...因此,在一个美国的区域设置,Scanner 能正确地读出字符串“32,767”作为一个整数值。 这里要注意的是语言环境,因为千位分隔符和小数点符号是特定于语言环境。...此外,PrintStream 和 PrintWriter 的执行同一套方法,将内部数据转换成格式化输出。提供了两个级别的格式: print 和 println 在一个标准的方式里面格式化独立的值 。

    71120

    Log4j2-Log4j 2介绍及使用

    支持自定义日志级别。自定义日志级别可以在代码或配置中定义。 支持Lambda表达式。运行在Java 8上的客户端代码可以使用Lambda表达式来实现仅在对应的日志级别启用时延迟构造日志消息。...这导致了在Logback Encoder中讨论的问题。Log4j 2用更简单的方法,Layout总是返回一个字节数组。...---- 日志级别 ? 在表格中,垂直列为LogEvent的级别,水平列为从合适的LoggerConfig中分配到的级别。...第三个字段是日志声明的级别。 第四个字段是与日志请求相关联的Logger名称。 在“-”之后的文本是日志的消息内容。...Log4j带有很多不同的Layout以支持诸如JSON、XML、HTML和Syslog ---- 转到Log4j 2 API 大多数情况下,从Log4j 1.x API转换到Log4j 2相当简单。

    94420

    02.HTML元素属性标题段落文本格式化链接

    02.HTML元素/属性/标题/段落 /文本格式化/链接 HTML 元素 ---- HTML 文档由 HTML 元素定义。...---- 不要忘记结束标签 即使您忘记了使用结束标签,大多数浏览器也会正确地显示 HTML: ? 以上实例在浏览器中也能正常显示,因为关闭标签是可选的。 但不要依赖这种做法。...在 XHTML、XML 以及未来版本的 HTML 中,所有元素都必须被关闭。 在开始标签中添加斜杠,比如 ,是关闭空元素的正确方法,HTML、XHTML 和 XML 都接受这种方式。...标签 描述 定义一个段落 插入单个折行(换行) ---- HTML 文本格式化 ? ?...---- HTML 格式化标签 HTML 使用标签 ("bold") 与 ("italic") 对输出的文本进行格式, 如:粗体 or 斜体 这些HTML标签被称为格式化标签(请查看底部完整标签参考手册

    4.5K30

    【合合TextIn】智能文档处理系列—电子文档解析技术全格式解析

    RTF富文本格式(Rich Text Format),允许文本格式化和包含图像等对象,确保文档可以在不同的文本处理软件之间传输而保持格式不变。...DOC文件由多个部分组成,包括文本内容、格式化信息、图像和其他媒体文件、以及文档的元数据。这些信息被组织在不同的数据流和结构中,例如:文本流:存储实际的文本内容。...解析器需要能够理解Markdown语法的各种规则,如标题的级别、列表的创建、代码块的表示方法等。7.2.2 内嵌HTML处理Markdown允许在其文本中直接使用HTML代码。...解析器在处理Markdown文本时,也需要能够处理和转换这些HTML代码,而不破坏其原有意图。...它提供了简单的方法来导航、搜索和修改DOM树。10.3.2 jsoupjsoup:一个用于Java的HTML解析器,其API设计用于提取和操作数据,使用DOM和CSS选择器查询。

    1.5K12

    Android控件TextView实现静态图与动态GIF图文混排

    最近做项目功能时,需要在TextView中展示图文,刚开始做的时候以为很简单,只需要用个ImageView跟TextView来展示就行了,可是发现这样做,不能实现我们需要的效果,这就需要涉及到富文本TextView...){ Spanned htmlStr = Html.fromHtml(html); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB...tv.setText(style); } } } 上面代码图片展示是通过ImageSpan来实现的,但默认的图片展示的gif图片是静态取第一帧图片,我们可以在获取图片时候使用...但是在细节上还是有不少区别的。而且性能上更加优化。...把Glide引入到我们项目中,然后在创建UrlDrawable 和 GlideImageGetter 代码可以参考:底部公众号回复"富文本"即可获取 方法调用: String content

    2.3K30

    log4j 详解

    它们之间可理解为父子关系,父级别会限制子级别的输出内容, Layout Log4j 自带的 layout 有: 复制 org.apache.log4j.HTMLLayout(以HTML表格形式布局),...第二种方法通过记录器的名称获得。记录器名称是可以传递任何字符串,通常是类或包的名称 ,用于区分不同类的输出,可以在 Layout 中通过 %c来获取。...) 这种方法打印使用 Level.ERROR 消息级别 3 public void fatal(Object message); 这种方法打印使用 Level.FATAL 消息级别 4 public void...消息级别 6 public void trace(Object message); 这种方法打印使用Level.TRACE消息级别 日志格式化 PatternLayout 最为常用的便是 org.apache.log4j.PatternLayout...设置的方法是在 % 与参数符号间添加数字, 例如 %20p, %-20p等。正数表示右对齐,负数表示左对齐,数字表示最小宽度,不足时用空格补齐。

    68320

    Java编程要点之 IO 流详解

    除字符和行之外,有许多方法来构造文本的输入和输出。欲了解更多信息,请参阅 Scanning 和 Formatting。...扫描(Scanning)和格式化(Formatting) 扫描和格式化允许程序读取和写入格式化的文本。 I/O 编程通常涉及对人类喜欢的整齐的格式化数据进行转换。...因此,在一个美国的区域设置,Scanner 能正确地读出字符串“32,767”作为一个整数值。 这里要注意的是语言环境,因为千位分隔符和小数点符号是特定于语言环境。...此外,PrintStream 和 PrintWriter 的执行同一套方法,将内部数据转换成格式化输出。提供了两个级别的格式: print 和 println 在一个标准的方式里面格式化独立的值 。...每个记录包括涉及在发票上的项目,如下表中三个值: 记录中顺序 数据类型 数据描述 输出方法 输入方法 示例值 1 double Item price DataOutputStream.writeDouble

    64310

    JSR310新日期API(三)-日期时间格式化与解析

    对于非线程安全这个问题也有解决方案: 方案一:把SimpleDateFormat实例封闭在方法中,也就是调用的时候才创建,这样虽然导致了资源浪费,但是可以避免并发问题。...DateTimeFormatter java.time.format.DateTimeFormatter在设计上是一个不可变类,也就是它是线程安全的,DateTimeFormatter的静态方法和实例方法只要返回...一般情况下,构造DateTimeFormatter实例可以使用它提供的静态工厂方法,这些静态方法如果不能满足需求,可以考虑使用DateTimeFormatterBuilder定制化建造DateTimeFormatter...分01秒 2019年01月05日 16时28分01秒 字符串反解析为日期时间类型的(parse)方法并不存在于DateTimeFormatter类中,parse方法存在于日期时间类自身之中,这样的设计才是合理的...其实JSR-310中的日期时间API的格式化和解析和旧有的日期时间API的格式化和解析从本质上是没有区别的,都是字符串解析和转换的游戏,但是个人是推荐使用JSR-310中的日期时间API的格式化和解析,

    1.7K20

    Android知识点

    异步方法:带有callback以及api注释里明确写明异步方法的方法,即不需要等这个方法走完,后边的代码就已经在执行了,通过callback得到方法执行的结果。...如果app未接入任何日志保存工具,可以在data/anr/目录下查看到所有的ANR异常信息。但需要su权限。否则无法访问到。 在复杂的布局上,比如很多app的首页需要加载不同类型的item。....9图的左上代表可以拉伸的区域,右下代表可以填充的区域 多语言字符串设置要都配置上,要不然就报android.content.res.Resources$NotFoundException 在8.0上切换语言部分文字没有切换...()+"使用"; nrbankTextView.setText(Html.fromHtml(html)); 也可以这样写 String content = "发现" + newGroup.size...actionText.append("规则"); tvBankArrivaldesc.setText(Html.fromHtml

    78610

    logging模块小结

    日志是一种可以追踪某些软件运行时所发生事件的方法。   日志的作用是通过记录和分析日志可以了解一个系统或软件程序运行情况是否正常,也可以在应用程序出现故障时快速定位问题。...CRITICAL 当发生严重错误,导致应用程序不能继续运行时记录的信息   在python中,logging模块提供的日志记录函数所使用的日志器默认设置的日志级别是WARNING,因此只有WARNING...logger对象调用setLevel()配置日志等级 第三,关于格式化日志输出   在logging模块中,默认的日志输出格式在logging.basicConfig方法中设置的如下:   ...默认格式: 日志级别:日志器名称:日志内容   对应BASIC_FORMAT: "%(levelname)s:%(name)s:%(message)s"   昨天在课上的时候,没有讲关于格式化的字符串有哪些...,则我们有两种方法去进行设置日志的输出格式: 使用logging.basicConfig进行格式化输出:   2.

    28220
    领券