ems
, contrariamente a las creencias populares (o al menos de la mayoría de los hilos sobre ems aquí), no se basa en el ancho de una sola 'M'.
Originalmente era así en tipografía, pero en el medio digital, incluido Android, su significado se cambió al tamaño del tipo de letra utilizado, o en otras palabras, a su altura (excluyendo cualquier relleno para acentos / signos diacríticos).
Eso significa que cuando especificas ems
para un TextView, lo usará textSize
como base y lo multiplicará por el ems
especificado.
Como ejemplo, si establece un TextView de 16sp ems
en 4, su ancho será de 64sp. Puede probarlo fácilmente utilizando dos TextView (con includeFontPadding
establecido en falso) uno al lado del otro dentro de un ConstraintLayout (para aprovechar su layout_constraintDimensionRatio
).
sp
.