【发布时间】:2018-04-19 17:07:11
【问题描述】:
考虑一下这个 HTML:
<ul>
<li>Some bullet point text.</li>
<li>Another bullet point:</li>
<ul>
<li>A Sub Bullet point of the above.</li>
<ul>
<li>A Sub sub bullet point.</li>
</ul>
<li>The second sub bullet point.</li>
</ul>
</ul>
我正在将它加载到 MainActivity 的 TextView 中:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val someText = findViewById<TextView>(R.id.someTextView)
val url = "<ul>\n" +
" <li>Some bullet point text.</li>\n" +
" <li>Another bullet point:</li>\n" +
" <ul>\n" +
" <li>A Sub Bullet point of the above.</li>\n" +
" <ul>\n" +
" <li>A Sub sub bullet point.</li>\n" +
" </ul>\n" +
" <li>The second sub bullet point.</li>\n" +
" </ul>\n" +
"</ul>\n"
someText.text = Html.fromHtml(url, Html.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE)
}
activity_main.xml 没什么特别的:
<TextView
android:id="@+id/someTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
- 我有tried this library,但也有同样的问题。
- 另一种解决方案是将标签转换为“\u25CF”,将子项目符号转换为“\u25CB”(或 BulletSpan),并使用 JSoup 进行排序。但这感觉对于标准 HTML 文本来说需要做很多工作。
- 我试过MyTagHandler,但同样的问题。
有什么想法吗?
感谢大家的帮助!
【问题讨论】:
-
考虑使用 WebView 来显示 HTML 内容。
Html.fromHtml()不仅非常有限,而且已弃用。 -
然后我的标记不见了,所以没有。并且不推荐使用 textView.text = Html.fromHtml(text, Html.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE)。
-
Html.fromHtml()在 Nougat+ 中已被弃用。为什么你说你的标记不见了? WebView 非常适合! -
我要试试这个解决方案hidroh.com/2016/02/27/richtext-textview-versus-webview,因为 fromHtml() 不支持
- 。但这是更多的代码:CSS 样式表等。
-
你根本不需要 CSS。基本 HTML 样式与您用于 TextView 的样式相同。但它是完全处理而不是部分。实际上,我不明白你为什么不能使用现有的 HTML(在从所有无用的
\n中清除它之后)。