ems
, всупереч поширеній думці (або, принаймні, з більшості повідомлень про ems тут), не базується на ширині одиниці "M".
Спочатку це було так у типографіці, але в цифровому носії, включаючи Android, його значення було зміщено на розмір використовуваного шрифту або, іншими словами, на його висоту (виключаючи будь-які відступи для акцентів / діакритики).
Це означає, що коли ви вказуєте ems
для TextView, він використовуватиме його textSize
як основу і помножить на ems
вказаний.
Як зразок, якщо ви встановите 16sp TextView ems
на 4, його ширина буде 64sp в ширину. Ви можете легко перевірити його, використовуючи два TextView (із includeFontPadding
встановленим значенням false) поруч у ConstraintLayout (щоб використовувати його layout_constraintDimensionRatio
).
sp
.