SpannableStringBuilder實現一個控件字體不同的字體風格

寫給自己的話:如果只是爲了解決眼前的問題去百度去google而應急這本身沒錯,但是如果只是救了急而不去消化掉,那永遠也不可能進步,多勤於總結消化吸收才能更快的進步.


最近在做一個商城類項目,註冊時需要彈出一些信息,但是內容又是不一樣的顏色,大小,剛開始是打算使用Html標籤來寫,通過TextView.setText(Html.fromHtml("內容"))來寫的,但是由於標籤學的很爛,這麼簡單的標籤都沒寫出來,偶然的關係看到關注的郭大神的公衆號推送了SpannableStringBuilder這個類,當然同時也瞭解到了SpannableString這個類,可謂收益匪淺呀,下面就來展示一下實現的效果,這裏只看核心的功能,由於只是一個介紹核心功能的小demo,所以佈局代碼儘量做到簡單,以便一看就懂.需要其它的可以再加入:



1:首先上佈局,這裏是一個TextView,當然EditText也是可以的,可以試一下:

<TextView
        android:gravity="center"
        android:id="@+id/tv"
        android:layout_width="200dp"
        android:layout_height="200dp" />


2:代碼如下:

TextView textView = (TextView) findViewById(R.id.tv);

        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
        spannableStringBuilder.append("提示\n請確認上家邀請碼是:1\n請確認上家暱稱是:田田");

        //這裏支持其它顏色設置方式,比如16進制的Color.parseColor("#ff0000")
        ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.RED);
        ForegroundColorSpan foregroundColorSpan1 = new ForegroundColorSpan(Color.parseColor("#ff0000"));

        //設置絕對字體大小(單位是像素),還有相對字體大小
        AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(40);
        AbsoluteSizeSpan absoluteSizeSpan2 = new AbsoluteSizeSpan(60);
        AbsoluteSizeSpan absoluteSizeSpan3 = new AbsoluteSizeSpan(60);
        //將設置的屬性添加給TextView的內容
        //第一個參數就是上面的顏色屬性,
        //2是從index爲2的字符開始
        //8是把這個屬性應用到第7個結束,包含頭不包含尾
        //第四個值一共有4個常量,可以一一試試看代表什麼意思
        spannableStringBuilder.setSpan(foregroundColorSpan, 13, 14, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        spannableStringBuilder.setSpan(foregroundColorSpan1, 24, 26, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

        spannableStringBuilder.setSpan(absoluteSizeSpan, 13, 14, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        spannableStringBuilder.setSpan(absoluteSizeSpan2, 0, 2, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        spannableStringBuilder.setSpan(absoluteSizeSpan3, 24, 26, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);

        textView.setText(spannableStringBuilder);


還有很多屬性介紹,大家可以自己試試.
參考博客:http://blog.csdn.net/harvic880925/article/details/38984705

 http://www.jianshu.com/users/769d3d3a9d4b



Demo:https://github.com/Tom1991/SpannableStringBuilder

發佈了30 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章