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就可以了。

你可能感兴趣的:(Android)