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

时间:2010-07-06 17:35:49

标签: android text rendering

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

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

我需要这个,因为组件的位置在右边  TextView取决于它的宽度,所以所有位置取决于多少  TextView包含的数字。

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

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

6 个答案:

答案 0 :(得分:55)

试试这个:

android:layout_width="wrap_content"
android:minEms="2"

答案 1 :(得分:18)

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

float measureText = zip.getPaint().measureText("00000");
zip.setWidth(zip.getPaddingLeft() + zip.getPaddingRight() + (int) measureText);

答案 2 :(得分:1)

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

TextPaint textPaint = new TextPaint();
textPaint.setTextSize(yourTextView.getTextSize());
yourTextView.setMinWidth((int) textPaint.measureText("-88.88"));

不要忘记在TextPaint对象中指定文本大小。根据情况在measureText中输入尽可能长的文本。

答案 3 :(得分:0)

我认为你正在寻找Paint类中的getTextBounds()方法。 没有自己尝试过。

答案 4 :(得分:0)

简单的解决方案,将你的 textview 的字体设置为 Monospace。

android:typeface="monospace"

答案 5 :(得分:-2)

使用TextView的 android:maxLength 属性。请阅读this