在进行 Android 开发的时候,不知道大家有没有遇到这么一种情况:

在用TextView 显示文本内容时,如果说在 xml 文档中设置的 android:layout_width 只有5px,但是要显示的文本内容(例如“This is a example.”) 很长超过 textView 预留的宽度(此处为:5px)时会看到 TextView 中显示的内容是空白的情况。这个时候再三检查确定自己属性设置无误后就会开始有疑问:

 Android 是怎样判断处理要显示的文本内容的呢?

其实这个时候,只要看了 Android 源码就会知道了,一般情况下在 TextUtils.java 中, ellipsize() 的动作是,如果文本内容超过 textview 预留长度,且预留长度不足以显示一个字符时,ellipsize 动作将直接返回 “”,这是 textview 为什么显示为空的最直观的原因。

再深入一点讲的话,这个跟 BufferType 相关。

从帮助文档可以看到,BufferType 有3个值,分别为:NORMAL, EDITABLE, 和 SPANNABLE,上面所说的一般情况指的是 " Normal ” 的时候,这个就会出现刚刚讲到显示为“” 的状况,那如果想TextView 尽可能显示文本内容,即使显示不了也以一个或者几个“.”显示时,要怎么办呢?

这个就跟  textview setText 时 BufferType 的值密切相关了。

根据代码测试结果,通过 tv.setText(textcontent, BufferType.xxx);对 textview 设置文本,如果该 textView 在 xml 设置的 singleLine = "true"、ellipsize =" end"、marqueeRepeatLimit ="marqueen_forever" focusable="true",那么,在显示的文本内容不为空,且 textview 预留宽度不足以显示一个字符的情况下,会根据 BufferType.xxx 显示不同的结果:

1、NORMAL:显示为空;

2、EDITABLE:会根据 textView 宽度显示1 or 几个“.”;

3、SPANNABLE:会根据 textView 宽度显示 1 or 几个“.”;

 

至于 EDITABLE 和 SPANNABLE 之前的区别,目前还尚待查证!

更多相关文章

  1. 为什么要学习 Markdown?究竟有什么用?
  2. Android(安卓)第三方登录、分享(ShareSDK、友盟)
  3. 内容提供器Content Providers
  4. Android(安卓)APK反编译方法(可以获取APK xml和android Manifest,j
  5. [置顶] Android(安卓)View(二)-View的scrollTo()以及scrollBy()
  6. Android官方开发文档Training系列课程中文版:打印内容之图像打印
  7. react native极光推送全程教程android和ios
  8. 捕获Android文本中链接点击事件
  9. MAC下Android(安卓)Studio 1.4编译构建Cocos2d-x 3.9之Android版

随机推荐

  1. Android(安卓)碎屏效果 (Crack Screen,击
  2. android socket通信
  3. {转}实现谷歌Android摄像头拍照 2010-06-
  4. Android使用XML全攻略(1)
  5. Android(安卓)二维码开发功能实现(五)---
  6. Android(安卓)系统基础
  7. Android关于布局、设计的常识【整理】
  8. Android平台搭建过程中的问题
  9. Android中的WebView
  10. Android(安卓)强大的图片加载缓存— Glid