2011-06-15 98 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會更準確。

相關問題