簡體   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