如何设置 TextView 的最小宽度(以字符为单位)?
我在这里进行了很好的搜索,但找不到解决方案。
我在relativelayout中有一个textview,其中包含一个整数。 数字范围在 1 到 99 之间 - 谁能告诉我如何确定尺寸 TextView 的宽度始终是字符串“99”的宽度 即使它只包含“1”?
我需要这个,因为组件的位置在它的右侧 TextView 取决于它的宽度,所以所有的位置都取决于有多少 TextView 包含的数字。
我不介意这是用 XML 还是代码完成的 - 我只是想避免 设置 TextView 的宽度(以像素为单位)!
感谢任何可能的解决方案;请问我是否遗漏了什么 重要信息!
I've had a good search for this on here and can't find a solution.
I have a TextView in a RelativeLayout which contains an integer number.
The number will range between 1 and 99 - can anyone tell me how to size
the TextView so that its width is always the width of the string "99"
even if it only contains "1"?
I need this because the positions of the components to the right of this
TextView depend on its width, so all are position depending on how many
digits the TextView contains.
I don't mind if this is done in XML or code - I just want to avoid having
to set the width of a TextView in pixels!
Thanks for any possible solutions; Please ask if I've missed out any
important info!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
试试这个:
try this:
如果您的字体是等宽字体,则 Ems 有效。对于比例字体,您希望它的宽度是两个“0”,而不是两个“m”。您可以像这样退回到 TextPaint.measureText:
Ems works if your font is monospace. For proportional fonts, you want it the width of two '0's, not two 'm's. You can fall back to TextPaint.measureText like so:
最好的方法是使用
TextPaint
。这是一个简单的示例:不要忘记在 TextPaint 对象中指定文本大小
在
measureText
中输入您期望看到的最长的字符串(我写了“-88.88”,假设我的文本可以处理 100 以下的正数或负数,逗号后有 2 位数字)Best way is to use
TextPaint
. Here is a simple example:Do not forget to specify text size in your TextPaint object
In
measureText
enter longest possible string you're expecting to see (I've written "-88.88" assuming my text can handle positive or negative numbers below 100 with 2 digits after comma)我认为您正在 Paint 类中寻找 getTextBounds() 方法。
我自己也没有尝试过。
I think you're looking for the getTextBounds() method in the Paint class.
Didn't try it myself tho.
简单的解决方案,将文本视图的字体设置为等宽字体。
Simple solution, set typeface of your textview as Monospace.