Android 为什么TextView文本有内容却显示为空?
来源:互联网 发布:有机合成工艺优化 编辑:程序博客网 时间:2024/04/27 21:09
在进行 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 之前的区别,目前还尚待查证!
- Android 为什么TextView文本有内容却显示为空?
- Android文本显示:TextView
- textview中自动换行显示文本内容
- android textview 显示 文本 .txt
- Android显示TextView文本控件
- android textview 文本显示不同颜色
- Android中TextView的文本内容中指定关键字高亮显示
- 设计模式 观察者模式 以Android中TextView文本内容发生变化为背景
- 【解析为何空文件夹却显示有容量】
- android textView是否为空的判断
- Android 判断TextView 是否为空
- 为什么msdn_oct_2001安装了内容却不显示?
- Android 文本内容滚动显示
- Android之检测文本内容是否为空时左右摆动效果
- 录制脚本时event不为空,但脚本内容却为空
- Android UI系列:TextView显示文本
- Android中Textview显示带html文本
- Android中Textview显示带html文本
- zend framework的初始化加载
- Netty In Action中文版 - 第八章:附带的ChannelHandler和Codec
- POJ 3684 Physics Experiment
- iOS 创建post请求
- Netty In Action中文版 - 第九章:引导Netty应用程序
- Android 为什么TextView文本有内容却显示为空?
- 黑马程序员_JAVA学习之IO
- h264序列头,帧头信息
- ios6到ios7视图的布局对绘图的影响及解决办法
- 学习
- Netty In Action中文版 - 第十章:单元测试代码
- While循环
- QTP场景恢复的实践和总结
- Java lambda和函数接口