На самом деле ищу ответ на этот вопрос .
Хотите установить ширину TextView на основе числа или символов. Поэтому, если я хочу, чтобы ширина всегда составляла 3 символа, я мог бы установить это, и он будет регулироваться в зависимости от параметра textSize. Без этого я должен установить ширину 50dip или что-то в этом роде, что может или не может быть правильным в зависимости от размера шрифта.
sp
.minEms
наверное, лучший ответ.Ответы:
Отвечая на свой вопрос ...
И победитель: установите
minEms
атрибут (android:minEms
) !!!Итак, « em », оказывается, относится к размеру самого широкого символа, обычно «M», понятно? Таким образом, установка minEms на целочисленное значение, скажем 3, в EditText или TextView должно обеспечить его ширину не менее 3 символов. Вы также можете установить maxEms.
Итак, ответ Кайла в этой ветке, хотя и неправильный, заставил меня найти ответ, поэтому спасибо Кайлу.
источник
layout_width
должно бытьwrap_content
для minEms и maxEms к работе по назначению, так как этот ответ указывает.Большинство шрифтов не устанавливают одинаковую ширину всех символов. Courier - это, пожалуй, наиболее часто используемое исключение из этого правила, но в целом обратите внимание на разницу между i и A, например. Поэтому то, о чем вы просите, может стать проблемой.
источник
Попробуйте использовать:
android:maxLength="3"
Это ограничит ваш текст определенным количеством символов.
источник
ems
, вопреки распространенному мнению (или, по крайней мере, из большинства веток об ems здесь), не основывается на ширине одной буквы «М».Изначально это было так в типографике, но в цифровых носителях, включая Android, его значение было смещено до размера используемого шрифта или, другими словами, его высоты (за исключением любых отступов для акцентов / диакритических знаков).
Это означает, что когда вы указываете
ems
для TextView, он будет использовать егоtextSize
в качестве основы и умножать наems
указанное.Например, если вы установите TextView
ems
для 16sp равным 4, его ширина будет равна 64sp. Вы можете легко протестировать его, используя два TextView (соincludeFontPadding
значением false) бок о бок внутри ConstraintLayout (чтобы использовать егоlayout_constraintDimensionRatio
).источник