700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android ImageSpan的表情文字居中对齐

Android ImageSpan的表情文字居中对齐

时间:2020-02-13 07:20:10

相关推荐

Android ImageSpan的表情文字居中对齐

复制下面的工具类 MyImageSpan:

public class MyImageSpan extends ImageSpan {public MyImageSpan(Drawable arg1) {super(arg1);}public int getSize(Paint paint, CharSequence text, int start, int end,Paint.FontMetricsInt fm) {Drawable d = getDrawable();Rect rect = d.getBounds();if (fm != null) {Paint.FontMetricsInt fmPaint=paint.getFontMetricsInt();int fontHeight = fmPaint.bottom - fmPaint.top;int drHeight=rect.bottom-rect.top;int top= drHeight/2 - fontHeight/4;int bottom=drHeight/2 + fontHeight/4;fm.ascent=-bottom;fm.top=-bottom;fm.bottom=top;fm.descent=top;}return rect.right;}@Overridepublic void draw(Canvas canvas, CharSequence text, int start, int end,float x, int top, int y, int bottom, Paint paint) {Drawable b = getDrawable();canvas.save();int transY = 0;transY = ((bottom-top) - b.getBounds().bottom)/2+top;canvas.translate(x, transY);b.draw(canvas);canvas.restore();}}

在代码中设置即可:

Spannable spannable = et_context.getText().insert(start, faceCode);Drawable drawable = context.getResources().getDrawable(faceId);drawable.setBounds(0, 0, px, px);spannable.setSpan(new MyImageSpan(drawable), start, start + faceCode.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。