我是靠谱客的博主 慈祥手链,最近开发中收集的这篇文章主要介绍android TextView 使用SpannableString数据源时,TextView的maxLines和ellipsize失效,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

有个需求,需要可以点击TextView的一部分,这时候就要用到SpannableString结合使用ClickableSpan来实现了,但是当TextView 使用SpannableString数据源时,就会遇到TextView的maxLines和ellipsize失效,所以遇到坑就总结下来以免下次再遇坑

根据下面的两篇,进行总结的: 

1、http://blog.csdn.net/xjlnx/article/details/8951667 这篇文件讲述了出现失效的原因及源码分析。 

2、http://stackoverflow.com/questions/14691511/textview-using-spannable-ellipsize-doesnt-work 这篇讲述了该怎么解决的方式

上面的两篇,对于初级人员的我来说,可能有点困难,也有点难理解,于是我就把这两篇慢慢的分析,最终还是给弄出来了,大笑

我是重写了TextView,将里面的onDraw重写下面是我的onDraw的代码:

/**
 * 注意:spannableString 设置Spannable 的对象到spannableString中时,要用Spannable.SPAN_EXCLUSIVE_EXCLUSIVE的flag值,不然可能会会出现后面的衔接字符串不会显示
 */
@Override
protected void onDraw(Canvas canvas) {
    CharSequence charSequence = getText() ;
    int lastCharDown = getLayout().getLineVisibleEnd(0) ;
    if (charSequence.length() > lastCharDown){
        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder() ;
        spannableStringBuilder.append(charSequence.subSequence(0,lastCharDown-4)).append("...") ;
        setText(spannableStringBuilder);
    }
    super.onDraw(canvas);
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这样就可以了。

最后

以上就是慈祥手链为你收集整理的android TextView 使用SpannableString数据源时,TextView的maxLines和ellipsize失效的全部内容,希望文章能够帮你解决android TextView 使用SpannableString数据源时,TextView的maxLines和ellipsize失效所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部