Ems是什么意思?(Android TextView)

Add*_*dev 289 android textview

Ems是什么意思(与TextView相关)?例如在

android:ems     setEms(int)
Run Code Online (Sandbox Code Playgroud)

使TextView正好是这么多的ems.

Gab*_*iba 382

android:ems或者setEms(n)设置TextView的宽度以适合n'M'字母的文本,而不管实际的文本扩展名和文本大小.见维基百科Em单位

但只有当layout_width设置为"wrap_content".其他layout_width值会覆盖ems宽度设置.

添加android:textSize属性将视图的物理宽度确定为上面设置的n'M文本的textSize*长度.

  • 为什么我的EditText可以有17个"M"字母,即使我将它设置为10个字母?我在水平LinearLayout中有三个EditText,所有这些都设置为"wrap_content" (22认同)

小智 57

Ems是一个排版术语,它控制文本大小等.点击这里

  • 它*将文本大小与其他内容的大小联系起来. (6认同)

小智 25

它是给定英文字体大小的字母M的宽度.
所以2em是这个给定字体中字母M宽度的两倍.
对于非英文字体,它是该字体中最宽字母的宽度.这个宽度大小(以像素为单位)与英​​文字体中M的宽度大小不同,但仍然是1em.
因此,如果我使用英文字体的12sp文本,1em相对于这个12sp英文字体; 使用12sp的意大利字体给出1em,其像素宽度与英文宽度不同.


Nav*_*nDA 6

em是字体宽度的排版单位.16点字体中的一个是16点


小智 5

ems是计量单位

em 一词最初是指大写字母 M宽度。它设置 TextView/EditText 的宽度以适合 n 个“M”字母的文本,而不管实际的文本扩展名和文本大小。

例如:

android:ems使 EditText 正好有这么多 em 宽。

<EditText
    android:ems="2"
/>
Run Code Online (Sandbox Code Playgroud)

表示创建的字母 M 宽度的两倍。


小智 5

虽然其他答案已经解决了这个问题(毕竟这是一个 3 年前的问题),但我只是要添加一些信息,并且可能修复了一些误解。

Em,虽然最初是指排版中单个“M”字符宽度的术语,但在数字媒体中,它已转换为相对于字体点大小(字体大小或文本大小)的单位,换句话说,它使用文本的高度,而不是单个“M”的宽度。

在 Android 中,这意味着当您指定 TextView 的 em 时,它使用所述 TextView 的 textSize 作为基础,不包括为重音/变音符号添加的填充。当您将 16sp TextView 的 em 设置为 4 时,这意味着它的宽度将为 64sp 宽,因此解释了@stefan 关于为什么 10 em 宽 EditText 能够容纳 17 'M' 的评论。