Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?
这里我们不说那些复杂的属性,光说我们通常用的比较多的,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。
我不知道自己的验证和理解到底对不对,还是我根本就理解错了,希望对此有更靠谱理解的大神多多指点,在此谢过。
时隔一年,我又来更新博客了,很遗憾现在的我已经不是程序员了,不过关于上面这个问题,我终于得到了答案,解答链接如下:http://blog.csdn.net/JavaLive09/article/details/38661773。感谢给予帮助的大家,顺便CSDN,我还会在回来的,以不同的身份。再见。
时隔不知道多少年,我又来了,是因为看到这个文章居然有很多宝宝留言,你们想知道我去了哪里,我还在行业里,只是转做产品经理了,后面我还会继续分享职场中的一些经验和感想,我并没有走远,哈哈。
Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?相关推荐
- android反射开启通知_作为Android开发者 你真的知道app从启动到主页显示的过程吗?...
前言 之前我跟大家说过,在一个夜黑风高的晚上,我的男同事突然给我发了一条微信,我点开来看,他竟然问我Android从按下开机键到启动到底发生了什么?此刻我的内心如下图: 然后就在昨天晚上,我又收到了他 ...
- Android 应用开发(40)---TextView(文本框)详解
TextView(文本框)详解 1.基础属性详解: 通过下面这个简单的界面,我们来了解几个最基本的属性: 布局代码: <RelativeLayout xmlns:android="ht ...
- 作为Android开发者,你真的熟悉Activity吗?
转载:http://www.codeceo.com/article/do-you-really-know-activity.html 作为Android开发者,你真的熟悉Activity吗? 学过an ...
- 对Android 开发者有益的 40 条优化建议(转)
下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...
- [转]对Android开发者有益的40条优化建议
下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...
- 【转】对Android开发者有益的40条优化建议
下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...
- 对Android开发者有益的40条优化建议
下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...
- 一个Android开发者眼中的微信小程序
前言 转眼间微信小程序已经推出好几个年头了,作为一名Android开发者,一直想尝试下:正好赶上公司策略调整,在开发完App后领导想着在开发一个小程序版,基于微信庞大的用户量,微信小程序成为了首选:在 ...
- 对 Android 开发者有益的 40 条优化建议
转自 http://www.oschina.net/translate/40-developer-tips-for-android-optimization?cmp&p=2 英文原文:40 D ...
- Android - 最基础的控件TextView
TextView TextView是一个十分简单和基础的控件,相信大家使用TextView主要就是用来显示文字的, 而创建一个项目的时候,页面显示的就一个内容为Hello World 的 TextVi ...
最新文章
- mysql连接池为何不用nio_为什么要用数据库连接池?
- WatchOS系统开发大全(5)-WKInterfaceController的生命周期
- Visual Studio 快速返回上次浏览/编辑的位置
- Anaconda更新源失败
- 南京信息工程大学c语言实验十报告,南京信息工程大学2014年C语言程序设计实验内容(全部).doc...
- 模态对话框和非模态对话框区别
- 基本结构标签(HTML)
- python清理日志脚本_Python日志:如果在程序运行时删除了日志文件,则创建新的日志文件(RotatingFileHandler)...
- WSL : llvm、clang 和XTP
- php的substr函数的作用是,PHP substr函数的实现功能技巧讲解
- HTML实现页面注册
- 计算机网络(三)物理层
- 新中大怎么修改服务器,新中大软件服务器地址修改
- php集成腾讯云im
- redis获取哈希类型的值,hget、hmget、hgetall
- 【Javascript】入门之QQ列表的实现
- 详解CAD软件2023功能更新-7个随附专业化工具组合
- Uniapp|image无法显示图片
- 为何国外的人都爱用电子邮箱?注册电子邮箱有哪些好处呢
- 非全日制研究生-在职程序员提升的不错选择