2014-12-23 147 views
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。 請幫幫我。非常感謝

+0

對不起,因爲沒有圖像。我的聲望不會超過10. – Freesky1102

+0

將img網址放在問題中,我們會爲您添加它。 –

+0

我認爲TextView可以配置橢圓大小? – davidshen84

回答

0

你試過android:ellipsize屬性?我認爲許多文本相關的視圖組件都有這個屬性。