为EditText指定字体大小时,何时优先使用android:ems而非android:textSize?
EditText中
android:ems的适用场景 要先理清:android:textSize是直接设定文字的大小(用sp单位能适配系统字体缩放),而android:ems本质是控制EditText的宽度——以当前字体下字母“m”的宽度为单位,并非设置字体大小。
适合使用android:ems的场景有这些:
- 固定长度输入场景:比如输入6位验证码、11位手机号这类固定位数的内容,用
android:ems可以让输入框宽度刚好容纳指定数量的字符,用户一眼就能判断需要输入多少内容,视觉上也更规整。 - 统一排版对齐需求:在表单类布局里,如果有多个输入框需要横向对齐(比如“姓名”“手机号”输入框),用
android:ems统一设置宽度,不管系统字体怎么缩放,输入框宽度都会按字符数量比例调整,始终保持排版整齐。 - 适配动态字体变化:如果你的APP允许用户自定义字体,或者需要跟随系统字体大小缩放,用
android:ems设置输入框宽度的话,输入框会自动适配字体尺寸,始终能容纳指定数量的字符,不会出现字体变大后输入框装不下内容、或字体变小后留白过多的问题。
注意:android:ems只负责控件宽度,文字大小还是由android:textSize控制,两者可以搭配使用。
内容的提问来源于stack exchange,提问作者Cheok Yan Cheng
相关产品推荐
相关产品推荐

