ems
, wbrew powszechnym przekonaniom (a przynajmniej z większości wątków o emach tutaj), nie opiera się na szerokości pojedynczego „M”.
Pierwotnie tak było w typografii, ale w nośniku cyfrowym, w tym na Androidzie, jego znaczenie zostało przesunięte do rozmiaru użytego kroju pisma, czyli innymi słowy, jego wysokości (z wyłączeniem wszelkich dopełnień dla akcentów / znaków diakrytycznych).
Oznacza to, że kiedy określisz ems
dla TextView, użyje go textSize
jako podstawy i pomnoży go przez ems
określony.
Na przykład, jeśli ustawisz 16sp TextView ems
na 4, jego szerokość będzie wynosić 64 sp. Możesz go łatwo przetestować, używając dwóch TextView (z includeFontPadding
ustawieniem na false) obok siebie w ConstraintLayout (aby wykorzystać jego layout_constraintDimensionRatio
).
sp
.