我在这里找到了很好的搜索,无法找到解决方案。
我在RelativeLayout中有一个包含整数的TextView。 这个数字介于1到99之间 - 任何人都可以告诉我如何调整大小 TextView使其宽度始终为字符串“99”的宽度 即使它只包含“1”?
我需要这个,因为组件的位置在右边 TextView取决于它的宽度,所以所有位置取决于多少 TextView包含的数字。
我不介意这是用XML还是代码完成的 - 我只是想避免这样做 以像素为单位设置TextView的宽度!
感谢任何可能的解决方案;请问我是否错过了任何一个 重要信息!
答案 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