Android 中TextView省略号代替超出内容,且获取被省

2021-02-18  本文已影响0人  大川的川
在项目需求中,需要在文本超出本行后截取超出的内容和其他信息组合起来,这样的需求,单单设置文本的android:ellipsize="end"属性值是不够的,我们还需要知道文本中被省略的内容,这就需要我们另辟蹊径了!
<!--XML布局中的textView-->
<TextView
       android:id="@+id/textView"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="1"
       android:ellipsize="end"
       android:gravity="center_vertical"
       android:maxLines="1"
       android:textColor="@color/color_222222"
       android:textSize="@dimen/sp_16" />

/**Activity中的实现逻辑**/
String strName =  "你所要获取的内容字符串";
textView.setText(strName);
textView.post(new Runnable() {
   @Override
   public void run() {
       // (此处注掉是因为Android版本6.0以下获取总是返回1)获取被省略的字符数,0表示没有省略 
       // int ellipsisCount = textView.getLayout().getEllipsisCount(textView.getLineCount() - 1);
       // 从第几个字符开始省略的
       int ellipsisStart = tvBookName.getLayout().getEllipsisStart(textView.getLineCount() - 1);
       if (ellipsisStart > 0
                            && strName.length() - ellipsisStart > 0
                            && !StringUtils.isEmpty(strName)) {
          String substring = strName.substring(0, ellipsisStart );
          textView.setText(substring);
          // 将原文中的超出部分截取出来,在textview2中显示
          String substring2 = strName.replace(substring, "");
          textView2.setText(substring2 + "这里是超出部分的截取显示");
       }
   }
});

剩下的就是根据你自己的需求进行截取了,祝君好运!新年快乐~!

上一篇下一篇

猜你喜欢

热点阅读