1
我使用replacementSpan爲每個單詞短語創建背景。 它與短語工作的權利,但錯的短句使用換行符在Android中替換
像這樣:
a aa aaa aaa aaaa
123123
213123123123123123123123123
這是我的源代碼
public class FrameSpan extends ReplacementSpan {
private final Paint mPaint;
private int mWidth;
public FrameSpan(int color) {
mPaint = new Paint();
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setColor(color);
mPaint.setAntiAlias(true);
}
@Override
public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
mWidth = Math.round(paint.measureText(text, start, end));
return mWidth;
}
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
int line_space = bottom - top;
canvas.drawRect(x, top, x + mWidth, bottom - line_space/3, mPaint);
canvas.drawText(text, start, end, x, y, paint);
}
}
List<String> tagList = /* the list of phrases */
int[] tagEndingIndex = /* the array contains the ending index of each phrases*/
StringBuilder stringBuilder = /* the complete text created from tagList */
SpannableString spannableString = new SpannableString(stringBuilder.toString());
for (int i = 0; i < tagEndingIndex.length; i++) {
int tagEndPos = tagEndingIndex[i];
String currentTag = tagList.get(i);
spannableString.setSpan(new FrameSpan(color), tagEndPos - currentTag.length() - 4, tagEndPos, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
TextView.setText(spannableString, BufferType.SPANNABLE);
隨着上述短語,我想他們ellipsize。 請幫幫我。非常感謝
對不起,因爲沒有圖像。我的聲望不會超過10. – Freesky1102
將img網址放在問題中,我們會爲您添加它。 –
我認爲TextView可以配置橢圓大小? – davidshen84