Ems是什么意思?(Android文本视图)

Ems是什么意思?(Android文本视图),android,textview,Android,Textview,Ems(与文本视图相关)是什么意思?例如在 android:ems setEms(int) 使文本视图具有如此多的ems宽度。ems是一个排版术语,它控制文本大小等。检查它是给定英文字体大小中字母M的宽度。 <EditText android:ems="2" /> 因此2em是给定字体中字母M宽度的两倍。 对于非英语字体,它是该字体中最宽字母的宽度。此宽度大小(以像素为单位)不同于英文字体中M的宽度大小,但仍为1em 因此,如果我在英文字体中使用带有12sp的文本

Ems(与文本视图相关)是什么意思?例如在

android:ems     setEms(int)

使文本视图具有如此多的ems宽度。

ems是一个排版术语,它控制文本大小等。检查它是给定英文字体大小中字母M的宽度。
<EditText
    android:ems="2"
/>
因此2em是给定字体中字母M宽度的两倍。
对于非英语字体,它是该字体中最宽字母的宽度。此宽度大小(以像素为单位)不同于英文字体中M的宽度大小,但仍为1em

因此,如果我在英文字体中使用带有12sp的文本,1em是相对于这个12sp英文字体的;使用带有12sp的意大利字体时,1em的像素宽度与英文字体的像素宽度不同。

android:ems
setEms(n)
设置文本视图的宽度,以适合n'M'字母的文本,而不考虑实际文本扩展名和文本大小。参见维基百科

但仅当
版面宽度设置为
“包裹内容”
时。其他
layout\u width
值覆盖ems宽度设置


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

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

em
基本上是字体大小的CSS属性

em和ex单位取决于字体,可能各不相同 文档中的元素。em只是字体大小。在一个元素中 对于2in字体,1em表示2in。表示大小,如边距 和填充,在em中意味着它们与字体大小有关,如果 用户有大字体(例如,在大屏幕上)或小字体(例如。, 在手持设备上),尺寸将成比例。声明 例如文本缩进:1.5em和边距:1em在 CSS


来源:

ems是一种测量单位

em这个名字最初是指大写字母M的宽度。它将文本视图/编辑文本的宽度设置为适合n'M'个字母的文本,而不考虑实际的文本扩展名和文本大小

例如:

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

<EditText
    android:ems="2"
/>


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

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

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


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

要添加到Android中的其他答案中,默认情况下,ems大小可以在每种语言和输入中有所不同

这意味着,如果要为文本字段设置由字符数定义的最小宽度,则必须正确计算Ems并根据字体和字体大小使用Ems属性进行设置

对于那些难以解决此问题的人,您可以自己计算提示大小,以避免与Ems发生冲突:

val tf = TextField()
val layout = TextInputLayout()
val hint = "Hint"

val measureText = tf.paint.measureText(hint).toInt()
tf.width = tf.paddingLeft + tf.paddingRight + measureText.toInt()
layout.hint = hint

不管怎么说,在这里提问之前先看看谷歌是很好的:如果你输入“ems android”,答案就在搜索结果的顶部。是的,我搜索了一些术语,没有使用“android”关键字,谢谢你的回答。将文本大小与其他事物的大小联系起来。为什么我的EditText可以有17个“M”字母,即使我将其设置为10ems?我在一个水平线性布局中有三个EditText,它们都设置为“wrap_content”,设置为minEms和maxEms