Android ImageSpan 給文字設(shè)置圓角背景 并且文字居中片任,背景居中。

通過SpannableString 設(shè)置ImageSpan來實(shí)現(xiàn)的蔬胯。

如果有什么不對(duì)的地方对供,或者影響效率等等的。請(qǐng)你多多指點(diǎn)氛濒,謝謝产场!我們應(yīng)該是相互學(xué)習(xí)的。

特此感謝?http://blog.csdn.net/industriously/article/details/53493392

特此感謝https://github.com/pengyuntao/RadiusBackgroundSpan

public class RadiusBackgroundSpan extends ReplacementSpan {

private int mColor;

? ? ? ? private int mTvColor;

? ? ? ? private int mTvSize;

? ? ? ? /**

? ? ? ? * @param color? 背景顏色

? ? ? ? * @param tvColor 需要改變文字顏色嗎

? ? ? ? * @param tvSize? 需要改變文字大小嗎

*/

? ? ? ? public RadiusBackgroundSpan(int color, int tvColor, int tvSize) {

mColor = color;

? ? ? ? ? ? mTvColor = tvColor;

? ? ? ? ? ? mTvSize = tvSize;

? ? ? ? }

@Override

? ? ? ? public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {

//mSize就是span的寬度舞竿,span有多寬京景,開發(fā)者可以在這里隨便定義規(guī)則

//我的規(guī)則:這里text傳入的是SpannableString,start骗奖,end對(duì)應(yīng)setSpan方法相關(guān)參數(shù)

//可以根據(jù)傳入起始截至位置獲得截取文字的寬度确徙,最后加上左右兩個(gè)圓角的半徑得到span寬度

? ? ? ? ? ? return (int) (paint.measureText(text, start, end));

? ? ? ? }

@Override

? ? ? ? public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {

paint.setColor(mColor);//設(shè)置背景顏色

//? ? ? ? ? ? paint.setAntiAlias(true);// 設(shè)置畫筆的鋸齒效果

? ? ? ? ? ? int bgPainth = Math.round(paint.getFontMetrics().descent - paint.getFontMetrics().ascent);

? ? ? ? ? ? int bgSize = getSize(paint, text.subSequence(start, end), start, end, paint.getFontMetricsInt());

? ? ? ? ? ? RectF oval =new RectF(x, y + paint.ascent(), x + bgSize, y + paint.descent() /2);

? ? ? ? ? ? //設(shè)置文字背景矩形醒串,x為span其實(shí)左上角相對(duì)整個(gè)TextView的x值,y為span左上角相對(duì)整個(gè)View的y值鄙皇。paint.ascent()獲得文字上邊緣芜赌,paint.descent()獲得文字下邊緣

? ? ? ? ? ? canvas.drawRoundRect(oval, (y + paint.descent()) /2, (y + paint.descent()) /2, paint);//繪制圓角矩形,第二個(gè)參數(shù)是x半徑育苟,第三個(gè)參數(shù)是y半徑

//我這里是全圓较鼓。 你可以自己去根據(jù)你需要的。去除以

? ? ? ? ? ? paint.setColor(mTvColor);//你需要的畫筆文字顏色

? ? ? ? ? ? paint.setTextSize(mTvSize);

? ? ? ? ? ? int tvPainth = Math.round(paint.getFontMetrics().descent - paint.getFontMetrics().ascent);

? ? ? ? ? ? int tvSize = getSize(paint, text.subSequence(0, 2), 0, 2, paint.getFontMetricsInt());

? ? ? ? ? ? canvas.drawText(text, start, end, (bgSize - tvSize) /2, y - (bgPainth - tvPainth) /2 + (bgPainth - y) /2, paint);//繪制文字

? ? ? ? }

}


調(diào)用方式就是正常寫法违柏。

而用圖片來做背景。我會(huì)繼續(xù)修改香椎,并且完善


這里放2張效果圖

全中文的:


中文加英文的


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漱竖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子畜伐,更是在濱河造成了極大的恐慌馍惹,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玛界,死亡現(xiàn)場(chǎng)離奇詭異万矾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)慎框,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門良狈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人笨枯,你說我怎么就攤上這事薪丁。” “怎么了馅精?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵严嗜,是天一觀的道長。 經(jīng)常有香客問我洲敢,道長漫玄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任压彭,我火速辦了婚禮睦优,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哮塞。我一直安慰自己刨秆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布忆畅。 她就那樣靜靜地躺著衡未,像睡著了一般尸执。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缓醋,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天如失,我揣著相機(jī)與錄音,去河邊找鬼送粱。 笑死褪贵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抗俄。 我是一名探鬼主播脆丁,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼动雹!你這毒婦竟也來了槽卫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤胰蝠,失蹤者是張志新(化名)和其女友劉穎歼培,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茸塞,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躲庄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钾虐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噪窘。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖禾唁,靈堂內(nèi)的尸體忽然破棺而出效览,到底是詐尸還是另有隱情,我是刑警寧澤荡短,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布丐枉,位于F島的核電站,受9級(jí)特大地震影響掘托,放射性物質(zhì)發(fā)生泄漏瘦锹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一闪盔、第九天 我趴在偏房一處隱蔽的房頂上張望弯院。 院中可真熱鬧,春花似錦泪掀、人聲如沸听绳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椅挣。三九已至头岔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鼠证,已是汗流浹背峡竣。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留量九,地道東北人适掰。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像荠列,于是被迫代替她去往敵國和親类浪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容