本人發(fā)帖宗旨:
1.不長篇大論。
2.發(fā)文前簡單搜一下是不是有人發(fā)過(簡單的)例证。
3.直說知識點路呜,基礎知識請自行補習。
4.隨性
此文已在Github和CSDN上發(fā)布過织咧,簡書上目前才開始寫 (ˇ?ˇ) 想~(歡迎star)
此文為引子胀葱,想看我寫好的請到Github上
Github:https://github.com/hnsugar
先睹為快,是不是想要這種效果笙蒙,一個textview就可以實現(xiàn)
pic1.jpg
pic2.gif
簡單說一下原理吧
大家知道emoji吧抵屿,自定義文本表情圖標也是同理,下面請大家好好理解理解SpannableString這個類捅位,
SpannableString可以做什么轧葛?
看一下style下有哪些類
Paste_Image.png
看圖說一下,我們能給每個字符指定一些屬性艇搀,除了常見的字號字體前景色背景色下劃線之外尿扯,還可以設置點擊事件、文本替換成圖片等等等中符,注意姜胖,是每個字符都可以單獨設置
簡單代碼示例(start操作字符串開始位置 end操作字符串結束位置)
添加點擊事件 mString.setSpan(new ClickAbleSpan(){.....},start,end,flag);
添加前景色 mString.setSpan (new ForegroundColorSpan (mTalkColor),start,end,flag);
mString.setSpan (new ClickableSpan () {
@Override
public void updateDrawState (TextPaint ds) {
/**
* 是否有下劃線
*/
ds.setUnderlineText (false);
/**
* 橘紅色字體
*/
ds.setColor (mNameColor);
}
@Override
public void onClick (final View widget) {
isNickNameClick = true;
if (mListener != null) {
mListener.onNickNameClick (finalMI, mInfos.get (finalMI));
}
}
}, 0, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
然后拼接換行符就可以了,就打造好了如開始圖片的樣子了淀散,對SpannableString如果感興趣可以自行探索右莱,這里不再介紹,本文只提供一個思路档插,別再用listview這種來寫了慢蜓。