2011-06-15 14 views
11

android'daki dize yazı tipi genişliğini piksel cinsinden hesaplamak istiyorum. Dize dizisi yaşıyorum ve tek bir dize oluşturmak için tüm bu dizi öğeleri ekliyorum. bu yüzden iki ardışık dizi elemanı arasında sabit boşluk koymam gerekiyor. Bu son dizeyi metin görünümüne yerleştiriyorum. Sonunda bu yazıyı tabloya ekliyorum. Kısacası tablo yapısını başlık ve değerlerle görmek istiyorum. Burada birçok gönderi gördüm ama bunun için çözüm getiremedim.Piksel cinsinden dize yazı tipi genişliği nasıl hesaplanır?

Şimdiden teşekkürler!

+1

Bu özellikle 'measureText' özel olarak sorduğunuz şey gibi görünmekle birlikte, bunu karmaşık hale getirmeniz gerektiğinden emin misiniz? Bunun yerine belki de bir 'TableLayout' içinde yerleştirilmiş çoklu TextViews kullanamamanın bir nedeni var mı? – kabuko

+0

Çok teşekkürler ... çoklu TextViews çalıştı. –

cevap

21

Paint adresinde measureText yöntemi mevcut görünüyor. Ben de buldum bir 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

Bir çekicilik gibi çalışır. Teşekkürler –

-3

bu çalışırsa bilmiyorum, ama olabilir.

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

Günümüzde yazı tiplerinin harfleri farklı genişliklere sahip olduğundan, bu yalnızca yaklaşık bir çözümdür (varsayım textSize = piksel cinsinden harf boyutu doğrudur) – RookieGuy

4

Thanks Jake for the working solution, henüz benim için de çalışmak için bu bulundu:

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

Ben çalışmak için gidiyorum TextView doğrudan Paint alma beni anwser daha olacağını hissettiren doğru.

İlgili konular