繁体   English   中英

在android TextView中格式化长段落

[英]Formatting long paragraphs in android TextView

我有很多文本(超过 10000 字),我想在我的 android 应用程序上显示它们。 文本包含项目符号、段落和换行符。 我想知道如何在没有手动编辑的情况下在我的应用程序上显示。 不可能将每个换行符都转换为\\n并将每个制表符都转换为\\t 我也尝试过解析 HTML 中的数据,然后使用Html.fromHtml(getString(R.string.text)) 但是,我得到的显示看起来完全没有格式化。

这就是我希望文本在应用程序中的外观:

HTML 标签是简单问题的简单解决方案,例如将文本设为粗体、斜体,甚至显示项目符号。 要为包含 HTML 标签的文本设置样式,请调用 Html.fromHtml 方法。 在幕后,HTML 格式被转换为跨度。 请注意,Html 类不支持所有 HTML 标签和 CSS 样式,例如将项目符号设为另一种颜色。

val text = "My text <ul><li>bullet one</li><li>bullet two</li></ul>"
txtview.text = Html.fromHtml(text)

Span 允许您使用更细粒度的自定义来实现多样式文本。 例如,您可以通过应用 BulletSpan 将文本的段落定义为具有项目符号点。 您可以自定义文本边距和项目符号之间的间隙以及项目符号的颜色。 从 Android P 开始,您甚至可以设置项目符号点的半径。 您还可以为跨度创建自定义实现。 查看下面的“创建自定义跨度”部分以了解如何操作。

val spannable = SpannableString("My text \nbullet one\nbullet two")
spannable.setSpan(
   BulletPointSpan(gapWidthPx, accentColor),/* start index */ 9, /* end index */ 18,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
   spannable.setSpan(BulletPointSpan(gapWidthPx, accentColor),/* start index */ 20, /* end index */ spannable.length,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
 txtview.text = spannable

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM