对于TextView 设置 Ellipsize ="End" 无效时的解决方法

在某些版本,或某些机型的系统中,TextView 设置ellipsize = "End" 或其它属性会没有效果,文本过长了,后面也不会显示“...”,这时候,我们可以自己写一个方法对这段过长的字符串进行处理,帖上方法:

 

	public static String ellipsizeString(final String txt, final TextView txtView) {
		if(android.os.Build.VERSION.SDK_INT < 14)  // 据初步证实API VISION 14以上的会出现这种情况,这个判断也可以去掉
			return txt;
		
		final String ellip = ServiceBindActivity.curContext.getResources().getString(R.string.txt_ellipsize);
		String str = txt;
		
		TextPaint txtpaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
		txtpaint.setTextSize(txtView.getTextSize());
		float txtWidth = txtpaint.measureText(str);
		
		// float scale  = ServiceBindActivity.curContext.getResources().getDisplayMetrics().scaledDensity;
		float PLpix = txtView.getPaddingLeft();// * scale + 0.5f;
		float PRpix = txtView.getPaddingRight();// * scale + 0.5f;
		float MLpix = 0f;
		float MRpix = 0f;
		
		
		float txtViewWidth = txtView.getResources()
					.getDisplayMetrics().widthPixels - (MLpix + MRpix) - (PLpix + PRpix);
		
		if(txtWidth <= txtViewWidth)
			return str;
		
		float onetextwidth = txtWidth / str.length();
		BigDecimal bd = new BigDecimal((txtViewWidth - txtpaint.measureText(ellip)) / onetextwidth).setScale(0, 					BigDecimal.ROUND_HALF_UP);
		return str.substring(0, bd.intValue()) + ellip;
	}


在Elipsize 属性设置为MIDDLE, START 的时候也会出现相同的情况,但也可以参照上面的思路解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值