ems
ตรงกันข้ามกับความเชื่อที่เป็นที่นิยม (หรืออย่างน้อยก็จากหัวข้อส่วนใหญ่เกี่ยวกับ ems ที่นี่) ไม่ได้ขึ้นอยู่กับความกว้างของ 'M' ตัวเดียว
เดิมเป็นแบบนั้นในการพิมพ์ แต่ในสื่อดิจิทัลรวมถึง Android ความหมายของมันถูกเปลี่ยนไปตามขนาดของแบบอักษรที่ใช้หรืออีกนัยหนึ่งคือความสูง (ไม่รวมช่องว่างในการเน้นเสียง / การกำกับเสียง)
นั่นหมายความว่าเมื่อคุณระบุems
สำหรับ TextView มันจะใช้มันtextSize
เป็นฐานและคูณด้วยems
ที่ระบุ
ตัวอย่างเช่นหากคุณตั้งค่า 16sp TextView เป็นems
4 ความกว้างของมันจะกว้าง 64sp คุณสามารถทดสอบได้อย่างง่ายดายโดยใช้ TextView สองตัว (พร้อมincludeFontPadding
ตั้งค่าเป็นเท็จ) เคียงข้างกันภายใน ConstraintLayout (เพื่อใช้ประโยชน์จากมันlayout_constraintDimensionRatio
)
sp
.