Mümkünse yüksekliği de almak isterim.Android'de dize genişliği nasıl alınır?
cevap
Bir Paint nesnesinin getTextBounds(String text, int start, int end, Rect bounds)
yöntemini kullanabilirsiniz. TextView
tarafından sağlanan boya nesnesini kullanabilir veya istediğiniz metin görünümünü kendiniz oluşturabilirsiniz.
yapabilir misin bir TextView'un kullanarak aşağıdaki: Sadece genişliği gerekiyorsa
Rect bounds = new Rect();
Paint textPaint = textView.getPaint();
textPaint.getTextBounds(text, 0, text.length(), bounds);
int height = bounds.height();
int width = bounds.width();
kullanabilirsiniz:
float width = paint.measureText(string);
http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String)
Ayrıca, metni belirli bir yazı tipi boyutunda ölçmek isterseniz, 'TextPaint paint = new TextPaint(); paint.setTextSize (yazı boyutu); '. textSize piksel cinsindendir. –
bir için iki farklı genişlik ölçüleri vardır Metin. Biri genişlikte çizilen piksellerin sayısı, diğeri ise metnin çizilmesinden sonra imlecin ilerlemesi gereken 'piksel' sayısıdır.
paint.measureText ve imleç verilen dize çizildikten sonra ileri edilmelidir (float) piksel sayısını döndürürpaint.getTextWidths. Boyanan piksel sayısı için diğer cevapta belirtildiği gibi paint.getTextBounds kullanın. Buna fontun 'Advance' denir inanıyorum.
Bazı fontlar için bu iki ölçüm farklıdır (örneğin), örneğin Black Chancery fontu diğer harfleri (üst üste binen) aşan harfler içerir - bkz. "L" harfi. Piksellerin boyanması için diğer yanıtta belirtildiği gibi paint.getTextBounds kullanın.
ben bu şekilde genişliğini ölçmüştür:
String str ="Hiren Patel";
Paint paint = new Paint();
paint.setTextSize(20);
Typeface typeface = Typeface.createFromAsset(getAssets(), "Helvetica.ttf");
paint.setTypeface(typeface);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.FILL);
Rect result = new Rect();
paint.getTextBounds(str, 0, str.length(), result);
Log.i("Text dimensions", "Width: "+result.width());
Bu size yardımcı olacaktır.
@Frank: String bir yayılmış dizgeyse? – Ashwin
Harika cevap. Bu arada, textView.setTextSize() 'işlevini çağırırsanız sonuç daha doğru olur. – li2