这里我们不说那些复杂的属性,光说我们通常用的比较多的,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。

我不知道自己的验证和理解到底对不对,还是我根本就理解错了,希望对此有更靠谱理解的大神多多指点,在此谢过。

Android maxEms和maxLength相关推荐

  1. maxEms和maxLength的区别以及maxEms不起作用的问题

    maxEms和maxLength的区别: maxEms:表示字宽的单位.设置的android:maxEms="10",但是显示11个中文,但是想要多出的字之后.之前的显示省略号就得 ...

  2. android代码设置maxlength,android-使用maxLength使用3个点结束TextView

    android-使用maxLength使用3个点结束TextView 我的布局中有一个TextView,它是layout_width中的wrap_content. 最多限制为15个字符,因此我正在使用 ...

  3. Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?

    这里我们不说那些复杂的属性,光说我们通常用的比较多的,android:maxlength 官网API对其的解释为: 第一句,也就是说,他是个inputfilter(输入过滤器)他的作用是通过speci ...

  4. android maxlength 汉字,Android TextView maxWidth、maxLines、maxLength、maxEms

    TextView maxWidth.maxLines.maxLength.maxEms 的区别面纱就此揭开!掌握它们的区别对实际开发蛮有用处.若您有遇到其它相关问题,很是欢迎在评论中留言,我和其余读者 ...

  5. Android TextView maxWidth、maxLines、maxLength、maxEms

    TextView maxWidth.maxLines.maxLength.maxEms 的区别面纱就此揭开!掌握它们的区别对实际开发蛮有用处.若您有遇到其它相关问题,非常欢迎在评论中留言,我和其他读者 ...

  6. 【TextView】Android TextView显示省略号的问题(关于TextView maxLength 和maxEms的学习)

    1.TextView的属性maxLength和maxEms 1). maxLength 作用:设置TextView 文本显示的个数 理解:把text的字符取出来,截取了指定个数个字符,然后将截取的字符 ...

  7. android edittext限制字节_android EditText输入限制

    zyz 发表于 2012-5-30 18:19:03 android EditText输入限制 android:digits="1234567890.+-*/%\n()" 限制输入 ...

  8. android控件之TextView(一)

    一.TextView 1.1 结构 java.lang.Object android.view.View android.widget.TextView 直接子类: Button, CheckedTe ...

  9. android界面基本属性

    布局: 在 android 中我们常用的布局方式有这么几种: 1.LinearLayout ( 线性布局 ) :(里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角) 线性布局分为水平 ...

最新文章

  1. Coolpad F61刷机解锁成功
  2. centos查看python版本_CentOS系统python默认版本由python2改为python3
  3. opencv配置(转)
  4. 悲剧的程序员用程序写出的爱情
  5. WPF 创建无边框的圆角窗口
  6. mysql 一维转二维_php 二维转一维,并取固定字段
  7. 关于typedef的用法总结(转)
  8. 第一次做APP接口开发过程总结
  9. 解决idea导入项目中文乱码intellij
  10. ASCII 码对照表
  11. 图书馆管理系统(连接数据库)
  12. 傅里叶变换中的假频**
  13. 3、在hilens_kit安装ros后,运行小车导航
  14. [25-Dec-2012] 工作之如恋爱,找个喜欢的吧 !
  15. 高德地图天气接口返回天气图标url
  16. Python拼接图片
  17. PyTorch:生态简介
  18. mysql mycat水平分库_MyCat水平分库
  19. dell中小企业商用台式机Vostro4667 win10家庭中文版重装成win7版
  20. 2977 二叉堆练习1

热门文章

  1. A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记
  2. 根据小分子药物的名字找作用的靶点蛋白
  3. 【原】拯救你的机械硬盘!
  4. SonarQube最全使用教程
  5. 转发:任正非寄语2010:开放、妥协与灰度
  6. PHP 在网页中的运用
  7. 一个前端开发工程师的天猫精灵评测报告
  8. linux下fastfds搭建
  9. easyexcel实现代码生成xlsx文件并保存到云端
  10. 骨传导蓝牙耳机哪款好、好用的骨传导耳机推荐