天天看點

TextView部分文本加粗 Html.fromHtml

前情:客戶提了個關鍵字加粗的需求,一個textview内部分加粗,這種需求一般都通過spannable設定好效果後指派給textview,但是考慮到這個項目裡需要改動的地方比較多且文本都已經設定在了String。xml檔案裡了,這時可以考慮使用html标簽了

支援條件:android的textview很早就有支援部分的html标簽如<a href=“www.baidu.com”>可以很友善的對一個關鍵字添加一個跳轉到百度的連結,同樣我這裡可以使用<b>标簽來加粗。其他相關支援的标簽可以自行百度

由于在調用xml的文本getString 方法會過濾html标簽,是以我們需要對這些标簽做個處理

<b>加粗</b>

我們可以用 &lt; 代替 < 符号

效果:

\&lt; b>加粗\&lt; /b> 或者如果标簽比較多我們也可以用\<data>标簽全括起來 效果:

<Data><![CDATA[ <b>加粗</b> ]]> </Data>

使用之後再指派的時候就可以直接使用方法了

textview.setText(Html.fromHtml(getString(R.String.設定的文本name))))

新的版本官方将該方法設定為棄用,但是新的方法也隻是多了個參數,

textview.setText(Html.fromHtml(getString(R.String.設定的文本name),Html.FROM_HTML_MODE_LEGACY)))

這個參數也是老的方法的預設參數,這給與了我們更大的自主性

PS:如果設定了html标簽記得不要忘記括上fromHtml方法,否則你的文本内的html标簽可能直接被暴露出來