Android支持多行文本省略Ellipsize

当使用TextView显示过长文字并需要省略时,若maxLine大于等于2,仅能通过将ellipsize属性设置为end来实现。本文介绍了一种处理方式,通过代码和注释详细解释了如何实现这一功能。示例代码存放在github上的Androids项目,这是一个包含实用工具类和自定义View的SDK,旨在提升Android开发效率。
摘要由CSDN通过智能技术生成

使用TextView显示过长的文字时往往需要省略部分内容,但是TextView控件在maxline>=2时(即多行显示),ellipsize属性只有设置为end才有效,start\middle则无效.因此我们要对此情况进行处理.

处理方式和逻辑见如下代码和注释:

 public static void ellipsize(TextView textView, String content) {
   
        TextUtils.TruncateAt ellipsize = textView.getEllipsize();
        if (ellipsize != TextUtils.TruncateAt.START && ellipsize != TextUtils.TruncateAt.MIDDLE) {
    // 只处理start和middle的截断
            textView.setText(content);
            return;
        }

        int maxLine = TextViewCompat.getMaxLines(textView);
        int availableWidth = textView.getWidth() - textView.getPaddingLeft() - textView.getPaddingRight();
        if (maxLine < 2) {
    // 单行,或没做行数限制
            textView.setText(content);
        } else {
   
            List<Point> linesStart = getLineStartAndEnd(textView.getPaint()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值