Android中TextView中添加的文本上下两行又重叠

如图显示的情况  

代码如下:  

我在网上查了查,网上只有显示EditText出现类似情况的,添加android:layerType=”software”这句话,但必须得使用 API level 11 或者更高,我改成了 API level 12,但仍然还是同样的情况,所以该方法不起作用。

然后我以为是高度不够,当将高度改变,留有大块的空间,但仍然没有改变。改变行间距为1dp甚至去掉行间距仍然无法使用。

但当我将内容增加到文本超过3行时,第三行和第二行不在重叠了。

然后我试了试将maxlines改成了2行,当文本刚好在两行时放生重叠,超过两行时重叠现象消失。

然后我又看了看Java程序,发现我在这个textView设置了自定义的字体,代码如下:

 Typeface typeFace = Typeface.createFromAsset(mContext.getAssets(),"LucidaSansRegular.ttf");
textViewContent.setTypeface(typeFace);

当将其删去后,重叠现象消失,在这时我才知道是字体的缘故。

后来又试了试,保留自定义字体,将 android:ellipsize="end"取掉,则不再出现重叠。我想是不是ellipsize=end的关系,所以改成start,middle,marquee,则重叠现象出现,改成none则重叠现象消失。所以最后确定,自定义字体与android:ellipsize属性冲突,造成了,版式错误出现重叠。

但为什么会这样,我在网上找了找答案,网上说是:

        使用其他字库,都会消耗程序的空间,这是要非常注意的。而且这些字库有时并不能完全提供你所需要的文字。
  举个例子,省略方式。当文字太多的时候,可以通过省略号省略后面的内容,省略号是使用“…”作为一个字体,可通过android:ellipsize属性进行设置。如果我们需要使用省略功能,需要确保字体具有省略号。此外,为了保证长度的一直,Android会进行填充处理,除了将一个字符更换为省略符合外,后面的字符将更换为一个特殊的Unicode字符,‘ZERO WIDTH NO-BREAK SPACE’ (U+FEFF)。这个字符并占用任何可视的位置,但是保障了string具有同样的长度。不是所有的字体都支持这个特殊的字符,可能会引发一些乱码现象。

这是我找到最靠谱的答案,也有说是超过三行,android:ellipsize会出问题,但我试了一下,不是android:ellipsize问题。

如果这个答案不对或者需要补充的,请告诉我,不胜感谢。

解决方法是删除自定义文本,或者取掉android:ellipsize两种方法。

总的来说,以后再使用自定义字体时,需要注意, android:ellipsize="end"和  android:maxLines="3"属性,注意可能发生的排版重叠。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值