Ems是什么意思(与TextView相关)?例如在
中android:ems setEms(int)
使TextView正好是这么多的ems。
答案 0 :(得分:377)
android:ems
或setEms(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。
答案 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