解决Textview里,用Spannable后,末尾省略号不显示的问题.

  贴出kotlin代码,复写一个新的Textview,重写onmeasure的方法.同时xml里面Textview设置
android:ellipsize="end"
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
    var layout: StaticLayout? = null
    var field: Field? = null
    try {
        val staticField = DynamicLayout::class.java!!.getDeclaredField("sStaticLayout")
        staticField.setAccessible(true)
        layout = staticField.get(DynamicLayout::class.java) as StaticLayout
    } catch (e: NoSuchFieldException) {
        e.printStackTrace()
    } catch (e: IllegalAccessException) {
        e.printStackTrace()
    }
    if (layout != null) {
        try {
            field = StaticLayout::class.java!!.getDeclaredField("mMaximumVisibleLineCount")
            field!!.isAccessible = true
            field.setInt(layout, maxLines)
        } catch (e: NoSuchFieldException) {
            e.printStackTrace()
        } catch (e: IllegalAccessException) {
            e.printStackTrace()
        }
    }
    super.onMeasure(widthMeasureSpec, heightMeasureSpec)
    if (layout != null && field != null) {
        try {
            field.setInt(layout, Integer.MAX_VALUE)
        } catch (e: IllegalAccessException) {
            e.printStackTrace()
        }
    }
}
最后完美解决:如图所示


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值