1. 程式人生 > >關於SpannableString屬性詳細介紹以及利用SpannableString顯示多種文字效果

關於SpannableString屬性詳細介紹以及利用SpannableString顯示多種文字效果

關於SpannableString:

SpannableString其實和String一樣,都是一種字串型別,同樣TextView也可以直接設定SpannableString作為顯示文字,不同的是SpannableString可以通過使用其方法setSpan方法實現字串各種形式風格的顯示,重要的是可以指定設定的區間,也就是為字串指定下標區間內的子字串設定格式。

下面我們一一解讀幾種Span常用的格式:

1. ForegroundColorSpan

為文字設定前景色,效果和TextView的setTextColor()類似,實現方法如下:

    SpannableString spannableString = new
SpannableString("設定文字的前景色為淡藍色"); ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor("#0099EE")); spannableString.setSpan(colorSpan, 9, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(spannableString);


2. BackgroundColorSpan

為文字設定背景色,效果和TextView的setBackground()類,實現方法如下:

    SpannableString spannableString = new SpannableString("設定文字的背景色為淡綠色");
    BackgroundColorSpan colorSpan = new BackgroundColorSpan(Color.parseColor("#AC00FF30"));
    spannableString.setSpan(colorSpan, 9, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    textView.setText(spannableString);


3. RelativeSizeSpan

設定文字相對大小,在TextView原有的文字大小的基礎上,相對設定文字大小,實現方法如下:

    SpannableString spannableString = new SpannableString("萬丈高樓平地起");
    RelativeSizeSpan sizeSpan01 = new RelativeSizeSpan(1.2f);
    RelativeSizeSpan sizeSpan02 = new RelativeSizeSpan(1.4f);
    RelativeSizeSpan sizeSpan03 = new RelativeSizeSpan(1.6f);
    RelativeSizeSpan sizeSpan04 = new RelativeSizeSpan(1.8f);
    RelativeSizeSpan sizeSpan05 = new RelativeSizeSpan(1.6f);
    RelativeSizeSpan sizeSpan06 = new RelativeSizeSpan(1.4f);
    RelativeSizeSpan sizeSpan07 = new RelativeSizeSpan(1.2f);
    spannableString.setSpan(sizeSpan01, 0, 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(sizeSpan02, 1, 2, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(sizeSpan03, 2, 3, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(sizeSpan04, 3, 4, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(sizeSpan05, 4, 5, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(sizeSpan06, 5, 6, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(sizeSpan07, 6, 7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    textView.setText(spannableString);


4. StrikethroughSpan

為文字設定中劃線,也就是常說的刪除線,實現方法如下:

    SpannableString spannableString = new SpannableString("為文字設定刪除線");
    StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
    spannableString.setSpan(strikethroughSpan, 5, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    textView.setText(spannableString);


5. UnderlineSpan

為文字設定下劃線,具體實現方法如下:

    SpannableString spannableString = new SpannableString("為文字設定下劃線");
    UnderlineSpan underlineSpan = new UnderlineSpan();
    spannableString.setSpan(underlineSpan, 5, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    textView.setText(spannableString);


6. SuperscriptSpan

設定上標,具體實現方法如下:

    SpannableString spannableString = new SpannableString("為文字設定上標");
    SuperscriptSpan superscriptSpan = new SuperscriptSpan();
    spannableString.setSpan(superscriptSpan, 5, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    textView.setText(spannableString);


7. SubscriptSpan,設定下標
8. StyleSpan

為文字設定風格(粗體、斜體),和TextView屬性textStyle類似,實現方法如下:

    SpannableString spannableString = new SpannableString("為文字設定粗體、斜體風格");
    StyleSpan styleSpan_B  = new StyleSpan(Typeface.BOLD);
    StyleSpan styleSpan_I  = new StyleSpan(Typeface.ITALIC);
    spannableString.setSpan(styleSpan_B, 5, 7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    spannableString.setSpan(styleSpan_I, 8, 10, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    textView.setHighlightColor(Color.parseColor("#36969696"));
    textView.setText(spannableString);


9. ImageSpan

設定文字圖片,實現方法如下:

    SpannableString spannableString = new SpannableString("在文字中新增表情(表情)");
    Drawable drawable = getResources().getDrawable(R.mipmap.a9c);
    drawable.setBounds(0, 0, 42, 42);
    ImageSpan imageSpan = new ImageSpan(drawable);
    spannableString.setSpan(imageSpan, 6, 8, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    textView.setText(spannableString);


10. ClickableSpan,設定可點選的文字
11. URLSpan

設定超連結文字,實現方法如下:

    SpannableString spannableString = new SpannableString("為文字設定超連結");
    URLSpan urlSpan = new URLSpan("http://www.jianshu.com/users/dbae9ac95c78");
    spannableString.setSpan(urlSpan, 5, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    textView.setHighlightColor(Color.parseColor("#36969696"));
    textView.setText(spannableString);

Demo:

相關推薦

關於SpannableString屬性詳細介紹以及利用SpannableString顯示多種文字效果

關於SpannableString: SpannableString其實和String一樣,都是一種字串型別,同樣TextView也可以直接設定SpannableString作為顯示文字,不同的是SpannableString可以通過使用其方法setSp

String 物件常用方法及屬性 詳細介紹

String物件的屬性:   1、constructor  :對建立該物件的函式的引用   2、length  :  字串長度   3、prototype  :允許您向物件新增屬性和方法 String物件的方法:   1、charAt() 方法可返回指定位置的

【專案管理與構建】Nexus的詳細介紹以及安裝(四)

      前面幾篇博文,我們介紹了怎麼使用maven,這篇博文我們簡單的介紹maven的私服Nexus。簡介        Nexus是Maven倉庫管理器,也可以叫Maven的私服。Nexus是一個

iOS_NSAttributedString 的21種屬性詳細介紹(圖文混排)

說明: NSAttributedString 可以非常方便的實現文字排版和圖文混排功能. 共有21中效果(API), 本文將較詳細的介紹21種的屬性的使用 注: 本部落格由@凡俊編寫, @Scott, @春雨 稽核, 若轉載此文章,請註

圖解CSS的padding,margin,border屬性(詳細介紹及舉例說明)//DIV居中中問題

圖解CSS的padding,margin,border屬性 W3C組織建議把所有網頁上的對像都放在一個盒(box)中,設計師可以通過建立定義來控制這個盒的屬性,這些對像包括段落、列表、標題、圖片以及層。盒模型主要定義四個區域:內容(content)、邊框距(padding)、邊界(border)和邊距(ma

DOM(一)一些屬性方法介紹以及相容性問題

DOM中Element型別:(以下所有的屬性僅僅是隻讀屬性) 一、node.nodeType 以數字值返回指定節點的節點型別。 存在 12 種不同的節點型別,其中可能會有不同節點型別的子節點(前三個為重要): if(ul.nodeType == No

前端構建工具gulp的詳細介紹以及使用

什麼是 gulp gulp 是一個前端構建工具,它能通過自動執行常見任務,比如編譯預處理 CSS ,壓縮 JavaScript 和重新整理瀏覽器,來改進網站開發的過程,從而使開發更加快速高效。 為什麼要用 gulp 與 grunt 相比,gu

商城專案實戰 | 10.1 xUtils3 詳細介紹以及 ViewUtils 的使用方法

本文為菜鳥窩作者劉婷的連載。”商城專案實戰”系列來聊聊仿”京東淘寶的購物商城”如何實現。 剛開始的時候,在 GitHub 上面出現了一款強大的開源框架叫 xUtils,裡面包含了很多實用的android工具,並且支援大檔案上傳,更全面的 http 請求

Nexus的詳細介紹以及安裝

簡介         Nexus是Maven倉庫管理器,也可以叫Maven的私服。Nexus是一個強大的Maven倉庫管理器,它極大地簡化了自己內部倉庫的維護和外部倉庫的訪問。利用Nexus你可以只在一個地方就能夠完全控制訪問和部署在你所維護倉庫中的每個Artif

android中wifi屬性介紹以及連線到指定的wifi

     今天公司的一個專案中的某一個功能正好需要切換wifi熱點的連線,所有順帶記錄一下 wifi模組簡介 android本身已經提供了包來處理Android環境下對Wifi的操作,位置是android.net.wifi下面。呼叫wifi操作需要在mainfest中

HTML5的自定義屬性data-*詳細介紹和JS操作實例

select 文章 red data scrip style box 實例 width 這篇文章主要介紹JS操作HTML自定義屬性的方法, 以實例形式分析了html中自定義屬性的設置與對應的javascript操作技巧 具體如下: HTML代碼如下(其中的d

VMware網絡連接模式—橋接、NAT以及僅主機模式的詳細介紹和區別.ziw

splay post 80端口 linux style -c inf 物理 數量 2017年1月10日, 星期二 VMware網絡連接模式—橋接、NAT以及僅主機模式的詳細介紹和區別 在使用VMware Workstation(以下簡稱:VMware)創建虛擬機的過程中

IDEA中的lombok外掛安裝以及各註解的詳細介紹

IDEA中的lombok外掛安裝以及各註解的詳細介紹 其實對於我們來說, 寫好實體類後,直接用快捷方式生成get,set方法,還有 構造方法就行了,但是對於欄位比較多的, 如果修改一個屬性的話,就要再修改他的get ,set方法,這樣容易出錯,但是用了lombok以後,就不必擔心了,下面給大家說下idea中

高併發架構系列:Spring Cloud的核心成員、以及架構實現詳細介紹

高併發架構系列:Spring Cloud的核心成員、以及架構實現詳細介紹     什麼是微服務 微服務的概念源於Martin Fowler所寫的一篇文章“Microservices”。 微服務架構是一種架構模式,它提倡將單一應用程式劃分成一組小的服務,服

Redis詳細介紹以及在SpringBoot中的簡單使用

1.Redis的特點:   (1)Redis支援資料的持久化,可以將記憶體中的資料儲存到磁碟中,下次啟動的時候可以直接載入磁碟中的資料;   (2)Redis不僅可以儲存key-value型別的資料,還可以儲存List、Set、hash、zset等資料結構的資料;

jQuery選擇器詳細介紹:基本選擇器,層次選擇器,屬性選擇器

jQuery選擇器的格式: $("選擇器")                                                                            

頁面顯示LCD液晶字型,特殊字型,@font-face屬性詳細用法,配圖

如果web專案中需要用到LCD液晶字型顯示數值(如下圖所示)該怎麼辦? 在這就需要用到@font-face(具體看一下語法) /* 定義 */ @font-face { font-family: 'MicrosoftYaHei'; src

lombok在idea中外掛的安裝以及各註解的詳細介紹

其實對於我們來說, 寫好實體類後,直接用快捷方式生成get,set方法,還有 構造方法就行了,但是對於欄位比較多的, 如果修改一個屬性的話,就要再修改他的get ,set方法,這樣容易出錯,但是用了lombok以後,就不必擔心了,下面給大家說下idea中安裝lombok的方

SpannableString屬性詳解

    1、BackgroundColorSpan 背景色      2、ClickableSpan 文字可點選,有點選事件    3、ForegroundColorSpan 文字顏色(前景色)    4、MaskFilterSpan 修飾效果,如模糊(BlurMas

java中解析一個json串,本文詳細介紹了安卓原生的解析以及用fastjson解析

在java或安卓中解析JSON有很多種方式,可以用谷歌給安卓提供的原生的解析方式解析安卓,也可以選擇第三方類庫,一些比較流行的解析方式如fastjson,Gson等,本文就簡單介紹一下java工程中fastjson解析json資料。在介紹fastjson解析之前,我想先給大