展示固定长度文字,SpannableString匹配链接被截断问题解决

最近项目中遇到这样的一个问题:动态列表中,每个item,文字只展示120字,超过120字,就是前120字+“…”来展示。但是,文字中有表情、链接等。

以前为了省事,就直接粗暴的截取前120字,然后跟省略号。然后去匹配表情和链接等,这样,就造成了一个问题,如果截取的位置遇到了链接,就会把链接截断,造成链接的不完整。

解决的办法就是,先匹配,把链接处理完,然后再去截取

为了简单处理,我下面用50字来模拟。即:一个文本,最多展示50字,超过了就有省略号。

特别说明:上面说的所谓上限(最多50或者120字),其实是一个粗略值,是可以小范围浮动的数值。实际中没有用户会去数字数,发现字数多了去找客服反映的。

首先,我先写个基本的匹配方法,把架子搭起来。
自定义MyTextView

package com.chen.demo;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ImageSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class MyTextView extends TextView {

    private Context mContext;

    public MyTextView(Context context) {
        this(context, null);
    }

    public MyTextView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mContext = context;
    }


    /**
     * 处理数据
     *
     * @param str 要被处理的数据
     */
    public void handleData(String str) {

        Log.e("handleData=str",str);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值