TextView图文混排图片被截断的问题以及Android省略号只有一个点的问题

本文探讨了在Android中使用TextView进行图文混排时遇到的图片被截断的问题,以及TextView设置省略号显示为单点的异常情况。解决方案包括使用TextUtils.ellipsize预先计算截断字符串,确保正确显示图文内容和省略号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值