2011-06-15 101 views
11

我想计算字符串字体宽度(以像素为单位)android。我有字符串数组,我附加所有这些数组元素以形成一个字符串。所以我必须在两个连续的数组元素之间设置固定的间距。我将这个最终的字符串放入textview中。最后,我将这个文本视图添加到表格中。总之,我想查看标题和值的表结构。我看过很多帖子,但没有得到解决方案。如何以像素为单位计算字符串字体宽度?

在此先感谢... !!!

+1

虽然看起来像'measureText'是你特别要求的,你确定你需要把它变得复杂吗?有没有一个原因,你为什么不能使用可能在'TableLayout'中放置的多个TextView? – kabuko 2011-06-15 17:57:59

+0

非常感谢...多个TextViews的工作。 – 2011-06-16 06:46:17

回答

21

看起来有measureText方法可用于Paint。我还发现了一个example

mPaint = new Paint(); 
mPaint.setAntiAlias(true); 
mPaint.setStrokeWidth(5); 
mPaint.setStrokeCap(Paint.Cap.ROUND); 
mPaint.setTextSize(64); 
mPaint.setTypeface(Typeface.create(Typeface.SERIF, Typeface.ITALIC)); 
// ... 
float w = mPaint.measureText(text, 0, text.length()); 
+0

工程就像一个魅力。谢谢 – 2013-06-07 13:19:38

-3

我不知道这是否正常工作,但它可以。

int textSize=20; 
Paint p=new Paint(); 
p.setTextSize(textSize); 
String string="Hello im a string."; 
public int getStringWidt() 
{ 
    return string.length*textSize; 
} 
+0

由于现在字体的字母有不同的宽度,这只是一个近似的解决方案(假设textSize =字母大小的像素是正确的) – RookieGuy 2015-10-12 09:55:47

4

Thanks Jake for the working solution,但我发现这对我工作太:

someText = "Lorem Ipsum"; 
TextView myTextView = (TextView) findViewById(R.id.myTextView); 
float w = myTextView.getPaint().measureText(someText); 

直接从我打算与之合作的TextView的获取油漆让我觉得anwser会更准确。

相关问题