You can use ReplacementSpan . In your activity:
TextView tagsTextView = (TextView) mView.findViewById(R.id.tagsTextView); SpannableStringBuilder stringBuilder = new SpannableStringBuilder(); SpannableString tag = new SpannableString("TEST"); stringBuilder.append(tag); stringBuilder.setSpan(new TagSpan(getResources().getColor(R.color.blue), getResources().getColor(R.color.white)), stringBuilder.length() - tag.length(), stringBuilder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tagsTextView.setText(stringBuilder, TextView.BufferType.SPANNABLE);
TagSpan.java
public class TagSpan extends ReplacementSpan { private static final float PADDING = 50.0f; private RectF mRect; private int mBackgroundColor; private int mForegroundColor; public TagSpan(int backgroundColor, int foregroundColor) { this.mRect = new RectF(); this.mBackgroundColor = backgroundColor; this.mForegroundColor = foregroundColor; } @Override public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
source share