根据字符设置TextView的宽度

Fra*_*gle 81 android width textview

真的在寻找答案.

想要根据一个或多个字符设置TextView的宽度.因此,如果我希望它总是3个字符宽,我可以设置它,它将根据textSize设置进行调整.如果没有这个,我必须将宽度设置为50dip或其他东西,根据字体大小,可能是也可能不对.

Fra*_*gle 159

回答我自己的问题......

获胜者是:设置minEms属性(android:minEms)!

所以" ems "结果是指最宽的角色的大小,通常是"M",得到它?因此,在EditText或TextView上将minEms设置为整数值(例如3)应确保其宽度至少为3个字符.您也可以设置maxEms.

所以凯尔在这个帖子上的答案虽然错了,但却让我找到答案,所以谢谢凯尔.

  • 另请注意,`layout_width`需要为'wrap_content`以便minEms和maxEms按预期工作,因为[这个答案](http://stackoverflow.com/a/11177925/56285)指出. (7认同)
  • 当然我还在测试看看这是否真的有效,但到目前为止它看起来像. (3认同)

小智 5

ems与流行的看法相反(或者至少与这里关于 ems 的大多数线程相反),它不是基于单个“M”的宽度。

它最初与排版中的含义相似,但在数字媒体(包括 Android)中,其含义转移为所使用字体的大小,或者换句话说,其高度(不包括任何重音符号/变音符号的填充)。

因此,这意味着当您ems为 TextView 指定 时,它将使用它textSize作为基数并将其乘以指定的值ems

作为示例,如果将 16sp TextView 设置ems为 4,则其宽度将为 64sp 宽。includeFontPadding您可以通过在 ConstraintLayout 内并排使用两个 TextView(设置为 false)来轻松测试它(以利用其layout_constraintDimensionRatio)。