Android中TextView實(shí)現(xiàn)分段顯示不同顏色的字符串
關(guān)于TextView
TextView是Android開(kāi)發(fā)中最最常見(jiàn)的控件之一,在API記錄的屬性有很多,但實(shí)際開(kāi)發(fā)中,也遇到很多有趣的需求,值得去嘗試,所以記錄下來(lái),既可以給大家提供參考,同時(shí)自己需要時(shí)候也方便查找.
最近開(kāi)發(fā)過(guò)程中有個(gè)小小的知識(shí)點(diǎn),就是TextView顯示的內(nèi)容需要分段顯示不同的顏色,如下圖所示

一般有三種實(shí)現(xiàn)方式
- 直接根據(jù)不同的需要分段字符串,然后分別使用多個(gè)TextView來(lái)顯示
- 使用spannablestring
- 使用Html
下面分別來(lái)簡(jiǎn)單介紹下三種方法
多個(gè)TextVew
- 這種方式簡(jiǎn)單粗暴,顏色樣式控制靈活
- 如果需要顯示的文本需要分多個(gè)段的話(huà),那就需要很多個(gè)TextView,而且布局不好控制
- 實(shí)現(xiàn)方式簡(jiǎn)單,就不寫(xiě)例子了
使用SpannableString
想必用過(guò)的人都知道,比較好的一點(diǎn)是SpannableString可以精確控制一個(gè)長(zhǎng)長(zhǎng)的字符串中第幾個(gè)到第幾個(gè)字符的樣式
SpannableString spannableString = new SpannableString("jakjfkajfjaj");
//設(shè)置顏色
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FE6026")), 3, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設(shè)置字體大小,true表示前面的字體大小20單位為dip
spannableString.setSpan(new AbsoluteSizeSpan(20, true), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設(shè)置鏈接
spannableString.setSpan(new URLSpan("www.baidu.com"), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//設(shè)置字體,BOLD為粗體
spannableString.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
以上只是列舉了幾個(gè)常見(jiàn)的用法,更多的可以參考android.text.style包下面的幾個(gè)類(lèi)

不知道大家看出上面的SpannableString的局限了沒(méi)有,沒(méi)錯(cuò),SpannableString的優(yōu)點(diǎn)在于控制得精細(xì),缺點(diǎn)也是在這。我們使用SpannableString的時(shí)候必須指定樣式使用的字符下標(biāo),那如果我們的字符串不是固定長(zhǎng)度的呢?
使用Html
如果使用場(chǎng)景是字符串長(zhǎng)度不固定的,比如需要服務(wù)端的數(shù)據(jù)來(lái)填充的
"首付:" + data1 + "月供:" + data2
服務(wù)端返回的數(shù)據(jù)長(zhǎng)度不固定的話(huà),用SpannableString就尷尬了,這時(shí)候可以考慮用Html
Html使用格式比較簡(jiǎn)單,需要用到font標(biāo)簽,具體的話(huà)看下面的例子
//首先是拼接字符串 String content = "<font color=\"#FE6026\">" + data + "</font>" //然后直接setText() TextView tvContent = (TextView) view.findViewById(R.id.tvContent); tvContent.setText(Html.fromHtml(content));
以上就是TextView分段顯示不同樣式字符串的方法,希望對(duì)大家有用
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- android TextView設(shè)置中文字體加粗實(shí)現(xiàn)方法
- Android TextView設(shè)置背景色與邊框的方法詳解
- Android編程開(kāi)發(fā)之TextView文字顯示和修改方法(附TextView屬性介紹)
- Android TextView字體顏色設(shè)置方法小結(jié)
- android實(shí)現(xiàn)上下滾動(dòng)的TextView
- android TextView多行文本(超過(guò)3行)使用ellipsize屬性無(wú)效問(wèn)題的解決方法
- android TextView不用ScrollViewe也可以滾動(dòng)的方法
- Android設(shè)置TextView顯示指定個(gè)數(shù)字符,超過(guò)部分顯示...(省略號(hào))的方法
- Android中TextView顯示圓圈背景或設(shè)置圓角的方法
- Android?妙用TextView實(shí)現(xiàn)左邊文字,右邊圖片
相關(guān)文章
Android學(xué)習(xí)筆記--使用剪切板在Activity中傳值示例代碼
相對(duì)于getText和setText而言,利用ClipData對(duì)象來(lái)傳遞數(shù)據(jù),更符合面向?qū)ο蟮乃枷?,而且所能傳遞的數(shù)據(jù)類(lèi)型也多樣化了2013-06-06
Android仿微信底部實(shí)現(xiàn)Tab選項(xiàng)卡切換效果
這篇文章主要為大家介紹了Android仿微信底部實(shí)現(xiàn)Tab選項(xiàng)卡切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02
Android實(shí)現(xiàn)長(zhǎng)圖文截圖功能實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)長(zhǎng)圖文截圖功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
Android計(jì)步模塊實(shí)例代碼(類(lèi)似微信運(yùn)動(dòng))
本篇文章主要介紹了Android計(jì)步模塊實(shí)例代碼(類(lèi)似微信運(yùn)動(dòng)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
關(guān)于Android 4.4相機(jī)預(yù)覽、錄像花屏的問(wèn)題的解決方法
這篇文章主要介紹了關(guān)于Android 4.4相機(jī)預(yù)覽、錄像花屏的問(wèn)題的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2016-12-12
android中GridView實(shí)現(xiàn)點(diǎn)擊查看更多功能示例
本篇文章主要介紹了android中GridView實(shí)現(xiàn)點(diǎn)擊查看更多功能示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-02-02
Android中制作自定義dialog對(duì)話(huà)框的實(shí)例分享
這篇文章主要介紹了Android中制作自定義dialog對(duì)話(huà)框的實(shí)例分享,安卓自帶的Dialog顯然不夠用,因而我們要繼承Dialog類(lèi)來(lái)制作自己的對(duì)話(huà)框,需要的朋友可以參考下2016-04-04
Android的Fragment的生命周期各狀態(tài)和回調(diào)函數(shù)使用
這篇文章主要介紹了Android的Fragments的生命周期各狀態(tài)和回調(diào)函數(shù)使用,Fragments的生命周期與Activity息息相關(guān),需要的朋友可以參考下2016-02-02
Android 三種實(shí)現(xiàn)定時(shí)器詳解及實(shí)現(xiàn)方法
本文主要介紹 Android 定時(shí)器的知識(shí)資料,這里整理了三種方法來(lái)實(shí)現(xiàn)定時(shí)器的方法,有需要的小伙伴可以參考下2016-09-09
Android打空包后提示沒(méi)有"android:exported"的屬性設(shè)置問(wèn)題解決
這篇文章主要介紹了Android打空包后提示沒(méi)有"android:exported"的屬性設(shè)置問(wèn)題的解決方法,文中通過(guò)圖文將解決的辦法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02

