Ems是什么意思? (Android TextView)

时间:2011-08-13 22:35:58

标签: android textview

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

android:ems     setEms(int)

使TextView正好是这么多的ems。

8 个答案:

答案 0 :(得分:377)

android:emssetEms(n)设置TextView的宽度以适合n' M'的文本。字母,无论实际的文字扩展名和文字大小。请参阅维基百科Em unit

但仅当layout_width设置为"wrap_content"时。其他layout_width值会覆盖ems宽度设置。

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

答案 1 :(得分:57)

Ems是一个排版术语,它控制文字大小等。检查here

答案 2 :(得分:25)

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

答案 3 :(得分:6)

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

答案 4 :(得分:1)

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

Em在印刷术中最初是指单个“ M”字符宽度的术语,但在数字媒体中,它已相对于字体的磅值(字体大小或textSize)移动了一个单位,换句话说它使用文本的高度,而不是单个“ M”的宽度。

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

答案 5 :(得分:0)

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

  

em和ex单位取决于字体,每种单位可能不同   文件中的元素。 em只是字体大小。在一个元素中   使用2英寸字体,1em因此意味着2英寸。表达尺寸,例如边距   和填充,在em中意味着它们与字体大小有关,如果   用户具有大字体(例如,在大屏幕上)或小字体(例如,   在手持设备上),尺寸将按比例。声明   例如text-indent:1.5em和margin:1em非常常见   CSS。

来源:https://www.w3.org/Style/Examples/007/units

答案 6 :(得分:0)

ems是单位的衡量标准

名称em最初是大写M 的宽度的引用。它设置TextView / EditText的宽度以适合n' M'的文本。字母,无论实际的文字扩展名和文字大小。

例如:

android:ems使EditText成为这么多的ems。

<EditText
    android:ems="2"
/>

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

答案 7 :(得分:0)

要添加到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