1. 程式人生 > >TextView圖文混排圖片被截斷的問題以及Android省略號只有一個點的問題

TextView圖文混排圖片被截斷的問題以及Android省略號只有一個點的問題

TextView中實現圖文混排主要採用的是SpannableStringBuilder、ImageSpan、正則表示式協同完成,具體的實現,自己去百度吧。

今天主要想說的是在圖文混排的時候,如果TextView設定了最大長度並且textView.setEllipsize(TruncateAt.END);,由於ImageSpan的作用,這時TextView的Ellipsize自動截斷功

能失效,會出現圖片截斷的情況。如何解決呢?

答案很簡單

  用TextUtils.ellipsize 先計算出截斷後的字串,然後在setText就OK了

		RelativeLayout mainLy = (RelativeLayout) findViewById(R.id.mainLy);
		TextView tx = new TextView(this);
		tx.setMaxWidth(200);
		tx.setSingleLine();
		tx.setEllipsize(TruncateAt.END);
		mainLy.addView(tx);
		
		String txt = "I'm a text!![face01][face01][face01][face01][face01][face01][face01][face01]";
		String ellipsizeStr = (String) TextUtils.ellipsize(txt, (TextPaint) tx.getPaint(), 200, TextUtils.TruncateAt.END);  
Log.e("tim", "ellipsizeStr: "+ ellipsizeStr); SmileyParser parser = new SmileyParser(this); CharSequence cs = parser.replace(ellipsizeStr); tx.setText(cs);


修改後的效果圖:


同樣利用TextUtils.ellipsize也可以解決Android TextView 在截斷字串時出現省略號有時為一個點的情況。先利用TextUtils.ellipsize計算出截斷後的String,然後在setText就可以了。