如图显示的情况  

代码如下:  

我在网上查了查,网上只有显示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"属性,注意可能发生的排版重叠。



更多相关文章

  1. 给android studio安装新字体,如mac系统的monaco字体
  2. Android中设置字体大小出现的问题(操作位置:Settings->Display->
  3. 2012-04-12 21:24 Android(安卓)开发中发送http请求
  4. Android神技之 使用SVG以及自定义IconFont字体库
  5. Android(安卓)重学系列 资源管理系统 资源的初始化加载(上)
  6. Android实现自定义字体格式液晶数字
  7. Android中I/O
  8. android中 spannable的使用【转】
  9. Android(安卓)String.xml Html格式化方法

随机推荐

  1. Build android source code 3 -- 编译
  2. [置顶] Android学习网站和博客汇总
  3. Android耳机按键监听
  4. Android(安卓)AsyncTask原理分析
  5. android 获取时间
  6. webservice获取手机归属地
  7. Android(安卓)Asynchronous Http Client-
  8. android 拦截鼠标按键
  9. android 全屏显示
  10. Speex on Android