【问题标题】:Formatting long paragraphs in android TextView在android TextView中格式化长段落
【发布时间】:2020-04-28 19:17:32
【问题描述】:

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

这就是我希望文本在应用中的样子:

【问题讨论】:

  • 您要设置的文本格式是什么?
  • 你能发布目前正在得到什么
  • 查看this library 以供参考。

标签: java android xml android-layout


【解决方案1】:

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

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

跨度允许您通过更细粒度的自定义来实现多样式文本。例如,您可以通过应用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-15
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多