解决textview末尾有时侯会显示不完整表情的问题

在限制TextView行数后,遇到表情显示不完整的问题。分析了手动截取字符串和自定义TextView的不足,深入研究TextView源码,发现DynamicLayout在处理Spannable时能动态调整布局。通过设置TextView文本类型为BufferType.SPANNABLE,成功解决问题。
摘要由CSDN通过智能技术生成

如图所示,textview限制行数之后会出现上面这个问题,看了网上很多办法,有说先计算宽度然后手动截取字符串的,有自定义textview的。。但没人觉得这些方法很难用,或者根本用不了吗?

1.首先手动截取字符串,增加了代码量,而且不好维护。

2.自定义控件就更不用说了,效率低不说,bug还一堆。

我不相信google没有考虑到上面的情况,毕竟本身就有emoji表情,不可能没碰到上面的情况!于是只能去看textview源码,于是找了半天,发现textview里面又把计算的逻辑分到其他类了,主要代码是下面这个方法:

protected Layout makeSingleLayout(int wantWidth, BoringLayout.Metrics boring, int ellipsisWidth,
            Layout.Alignment alignment, boolean shouldEllipsize, TruncateAt effectiveEllipsize,
            boolean useSaved) {
        Layout result = null;
        if (mText instanceof Spannable) {
            result = new DynamicLayout(mT
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值