ems
, contrairement aux croyances populaires (ou du moins de la plupart des discussions sur les ems ici), n'est pas basée sur la largeur d'un seul «M».
C'était à l'origine comme ça en typographie, mais sur support numérique, y compris Android, sa signification a été décalée vers la taille de la police utilisée, ou en d'autres termes, sa hauteur (à l'exclusion de tout rembourrage pour les accents / signes diacritiques).
Cela signifie que lorsque vous spécifiez le ems
pour un TextView, il l'utilisera textSize
comme base et le multipliera par le ems
spécifié.
À titre d'exemple, si vous définissez un TextView 16sp ems
sur 4, sa largeur sera de 64sp. Vous pouvez facilement le tester en utilisant deux TextView (avec includeFontPadding
la valeur false) côte à côte dans un ConstraintLayout (pour en tirer parti layout_constraintDimensionRatio
).
sp
.