TextView设置最多显示指定个字符,超过部分显示...(省略号)
今天在公司遇到一个需求;TextView设置最多显示8个字符,超过部分显示...(省略号),网上找了很多资料,有人说分别设置TextView的android:signature="true",并且设置android:ellipsize="end";但是我试了,并没有成功,最后自己试出一种方式如下:供大家参考
- <TextView
- android:id="@+id/tv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:maxEms="18"
- android:singleLine="true"
- android:ellipsize="end"
- />
这里我们不说那些复杂的属性,光说我们通常用的比较多的,android:maxlength
官网API对其的解释为:
第一句,也就是说,他是个inputfilter(输入过滤器)他的作用是通过specified
, number(你指定的数字)来限制text
,length(文本长度),这里特指的是文本长度,而无论我们输入什么内容,英文,符号,数字,汉字………………这些都属于文本范围,所以maxlength的作用就是直接限制显示的长度,
比如:
界面效果就是:
7个字母+3个汉字。
今天做到这里的时候发现不能单纯利用这个属性做限制,就看了别的,发现还有个maxEms的属性,官网对其的解释为:
第一句:翻译过来是使得textview的宽度不少于很多ems的宽度
What???????此时超级不理解ems是啥?反正绝对不能是邮政快递吧,很迷茫在网上查了下各种开发者的解释,如下:
这位说是限制字符数量,那么我的理解就是严格按照中文两个字符长度,字母占一个这样的规则,于是写了个例子进行测试,
界面结果是:
的确是自动换行了,但是第一行显示了7个字母加2个汉字,按照字节数来说的话应该是7+4=11才对啊,完全不是五个,但是往下看,第二行,是四个汉字加一个中文标点,10个字符长度,5个字符,莫非是这个意思?
然后我进行了下面几种测试:
第一行是10个a,我就想难道在这里,中文算1个字符长度,字母算半个?
继续测试
第一行显示的是25个字符(包含三个英文标点),阿西吧,刚刚建立的世界观就毁了,看来也不是这种计算方式。
继续测++:
到这里的时候我就欢乐了,应该就是指中文汉字数目吧,继续验证
我了个去…………第一行咋又出现了11个字呢………………
于是我从1开始验证到了18,发现如下不成规律的规律:
设你输入的参数为n, 屏幕显示的数量为m。
值为1-5时,m = n..
6-11时,m = n+1。
12-18时,m = n+2。
再大我就没测试了,因为屏幕放不下了……………………
基本是符合规律的,对于结果+1和+2,我的猜想是,汉字间是有间隙的,汉字一多,加上间隙,宽度就会增大。也只是猜想,再反过来看看API。
虽然还是不明白ems是什么,但是这里有个很重要的词,wide,宽度范围,而没有强调长度,那么我想应该就是字符在屏幕中所占的宽度了,既然这样,就和屏幕宽度和字体大小有直接的关系。
本文到此基本能结束了,相信大家也有点了解了,虽然我也不能确定自己的猜想是正确的,但是拿来用应该没问题了,但是我对这个方法还有点吐槽:
1, GoogleAPI会以汉字为基准吗?地位一下提高的感觉啊……
2, 对于ems这种英文符号,没有意义,我们该怎么猜测。
3, 在android条件下,各种分辨率,各种屏幕标准,山寨手机还喜欢篡改默认字体的情况下用这种空间布局属性实在不太好适配呀……有较大的局限性
4, 综上所述,这个属性和方法不好用……over。
我不知道自己的验证和理解到底对不对,还是我根本就理解错了,希望对此有更靠谱理解的大神多多指点,在此谢过。
TextView设置最多显示指定个字符,超过部分显示...(省略号)的更多相关文章
- fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤)(转)
fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤) Fiddler 有一个filters可以很好的帮助我们只显示我们关系的请求或 ...
- Android编程 EditView 中如何设置最多可以输入的字符数量 属性 android:ems 与 android:maxLength 的区别
最近有一个新的感悟,那就是工作的时候千万不要遇到那种特要人无语的领导,很不幸我现在就遇到了这样的一个领导,说是要给领导认识的一个熟人家的孩子写本科毕业设计预算把我给派过去给本科生写毕业设计,这事情的确 ...
- CSS- 控制图片显示指定大小 并超过大小自动缩小
有时候利用css比较方便控制网页html中img图片的显示大小.这样也省得自己一个一个去定义. img,a img{ border:; margin:; padding:; max-width:600 ...
- Android中TextView设置最大长度,超出显示省略号
今天在项目中碰到一个问题,在一个页面的顶部的标题栏显示公司的名字,但由于公司名称较长,显示不开,影响美观.故在网上查阅资料,在此做个小的总结. TextView中有个ellipsize属性,作用是当文 ...
- Android如何用一个TextView显示不同颜色得字符
最近做一个项目,需要一个字符串显示不同的颜色.当时直接想到的就是用多个TextView来拼接,但是如果字符数量多的话,这样写是非常麻烦得.而且还要增加很多控件. 后来发现一个非常方便得方法.直接看代码 ...
- Ubuntu 12.10 Tty (字符终端) 显示中文,和字体大小设置
Tty通过修改默认的中文编码字符,和安装zhcon都无法显示中文.可安装fbterm来显示中文,命令:sudo apt-get install fbterm安装即可,进入Tty: (Ctrl+Alt+ ...
- 安卓TextView限定行数最大值,点击按钮显示所有内容
问题展示 如上图所示,在普通的TextView中,要求: 最多显示3行 超过三行显示展开按钮 且点击展开按钮显示完整内容 这个需求看似简单,但解决起来会遇到两个较为棘手的问题:1,如何判断是否填满了前 ...
- 使用C#模拟键盘输入、鼠标移动和点击、设置光标位置及控制应用程序的显示
1.模拟键盘输入(SendKeys) 功能:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样. 语法:SendKeys.Send(string keys);SendKeys.SendWa ...
- .net截取指定长度汉字超出部分以指定的字符代替
下面是我在网上搜索,然后加以整理的关于在.net中截取指定长度汉字超出部分以指定的字符代替,来拓展一下自己的思路. 方法一 :在后台的select语句中直接操作或是在数据库中写一个存储过程 Selec ...
随机推荐
- 团体队列(UVa540)
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...
- explicit 显示的类型转换运算符
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生.声明为explicit的构造函数不能在隐式转换中使用. 调用构造函数可以分为显示调用和隐式调用,当用赋值初 ...
- 网络数据修改工具netsed
网络数据修改工具netsed 通过修改网络数据,可以绕过软件和防火墙的限制,达到特定的目的.Kali Linux提供一个简易数据修改工具netsed.该工具支持对TCP和UDP的数据进行修改.渗透 ...
- iOS Sprite Kit教程之场景的切换
iOS Sprite Kit教程之场景的切换 Sprite Kit中切换场景 每一个场景都不是单独存在的.玩家可以从一个场景中切换到另外一个场景中.本小节,我们来讲解场景切换.在每一个游戏中都会使用到 ...
- python抓包模块
pcapy模块 安装 yum install -y epel-release yum install -y pip gcc gcc-c++ libpcap-devel python-deve ...
- 深入理解ajax系列第九篇
前面的话 jQuery提供了一些日常开发中需要的快捷操作,例如load.ajax.get和post等,使用jQuery开发ajax将变得极其简单.这样开发人员就可以将程序开发集中在业务和用户体验上,而 ...
- django项目添加新的app
- CentOS的利手:“Screen”一个可以在多个进程之间多路复用一个物理终端的窗口管理器
你是不是经常需要远程登录到Linux服务器?你是不是经常为一些长时间运行的任务头疼?还在用 nohup 吗?那 么来看看 screen 吧,它会给你一个惊喜! 你是不是经常需要 SSH 或者 tele ...
- 【BZOJ】2561: 最小生成树【网络流】【最小割】
2561: 最小生成树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2685 Solved: 1253[Submit][Status][Discu ...
- windows下python2.7.14版本的安装
本文主要对window下如何安装Python进行图解说明 步骤一.从官网下载相应的版本(本文以2.7.14为例),https://www.python.org/downloads/release/py ...
