ImageSpan图片和在行文字居中
文字中添加图标:
/** 文字中增加图标 */
public static Spannable addDrawableInText(int start, int end, int resouceId, Spannable text) {
Drawable drawable = SkinManager.getInstance().getDrawable(resouceId);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
text.setSpan(new MyImageSpan(drawable), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return text;
}
图片span
public class MyImageSpan extends ImageSpan {
public MyImageSpan(Context arg0, int arg1) {
super(arg0, arg1);
}public MyImageSpan(Drawable d) {
super(d);
}@Override
public void draw(Canvas canvas, CharSequence text, int start, int end,
float x, int top, int y, int bottom, Paint paint) {Drawable b = getDrawable();
// font metrics of text to be replaced
Paint.FontMetricsInt fm = paint.getFontMetricsInt();
int transY = (y + fm.descent + y + fm.ascent) / 2
- b.getBounds().bottom / 2;
canvas.save();
canvas.translate(x, transY);
b.draw(canvas);
canvas.restore();
}
}
点击和颜色的span:
class TopicsBlueSpan extends ClickableSpan {
private String content;
public TopicsBlueSpan(String content) {
this.content = content;
}@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(Color.BLUE);
ds.setUnderlineText(false);
}@Override
public void onClick(View widget) {
...
}
}
【ImageSpan图片和在行文字居中】此时点击后会出现文字选中出现淡绿色的背景色现象。
ds.setColor()
设定的是span超链接的文本颜色,而不是点击后的颜色,点击后的背景颜色HighLightColor
属于TextView的属性,通过方法textview.setHighlightColor(Color.TRANSPARENT);
解决。推荐阅读
- 宽容谁
- 一个人的旅行,三亚
- 急于表达——往往欲速则不达
- 第6.2章(设置属性)
- 布丽吉特,人生绝对的赢家
- 家乡的那条小河
- 第三节|第三节 快乐和幸福(12)
- 讲述,美丽聪明的海欧!
- 夜游宫|夜游宫 心语
- 增长黑客的海盗法则