ems
, вопреки распространенному мнению (или, по крайней мере, из большинства веток об ems здесь), не основывается на ширине одной буквы «М».
Изначально это было так в типографике, но в цифровых носителях, включая Android, его значение было смещено до размера используемого шрифта или, другими словами, его высоты (за исключением любых отступов для акцентов / диакритических знаков).
Это означает, что когда вы указываете ems
для TextView, он будет использовать его textSize
в качестве основы и умножать на ems
указанное.
Например, если вы установите TextView ems
для 16sp равным 4, его ширина будет равна 64sp. Вы можете легко протестировать его, используя два TextView (со includeFontPadding
значением false) бок о бок внутри ConstraintLayout (чтобы использовать его layout_constraintDimensionRatio
).
sp
.