如何为TextView设置最小宽度(以字符为单位)?

If *_*Art 25 android text rendering

我在这里找到了很好的搜索,无法找到解决方案.

我在RelativeLayout中有一个包含整数的TextView.数字将介于1到99之间 - 任何人都可以告诉我如何调整TextView的大小,使其宽度始终是字符串"99"的宽度,即使它只包含"1"?

我需要这个,因为TextView右侧组件的位置取决于它的宽度,因此所有位置都取决于TextView包含的位数.

我不介意这是用XML还是代码完成的 - 我只是想避免设置TextView的宽度(以像素为单位)!

感谢任何可能的解决方案; 请问我是否错过了任何重要信息!

小智 60

试试这个:

android:layout_width="wrap_content"
android:minEms="2"
Run Code Online (Sandbox Code Playgroud)

  • 您可能还想添加android:gravity =“ center” (3认同)

pfo*_*han 19

如果您的字体是等宽字体,则Ems可以工作.对于比例字体,你希望它的宽度为两个'0',而不是两个'm'.您可以像这样回退到TextPaint.measureText:

float measureText = zip.getPaint().measureText("00000");
zip.setWidth(zip.getPaddingLeft() + zip.getPaddingRight() + (int) measureText);
Run Code Online (Sandbox Code Playgroud)


And*_*pek 5

最好的方法是使用TextPaint. 这是一个简单的例子:

TextPaint textPaint = new TextPaint();
textPaint.setTextSize(yourTextView.getTextSize());
yourTextView.setMinWidth((int) textPaint.measureText("-88.88"));
Run Code Online (Sandbox Code Playgroud)

不要忘记在 TextPaint 对象中指定文本大小
,输入measureText您期望看到的最长的可能字符串(我写了“-88.88”,假设我的文本可以处理 100 以下的正数或负数,逗号后有 2 位数字)