2013-01-11 14 views
5

Mam teraz tekst o nazwie Hello. Teraz muszę zastosować fontsize, aby powiedzieć 12 lub 18 teraz, gdy tylko zastosujemy czcionkę do tekstu, który zwiększa rozmiar tekstu.Uzyskaj wysokość tekstu, w tym rozmiar czcionki i ustaw ją na taką wysokość.

więc teraz muszę uzyskać wysokość tekstu, w tym rozmiar czcionki za pomocą farby.

Próbowałem farbą następujące:

String finalVal ="Hello"; 

Paint paint = new Paint(); 
paint.setTextSize(18); 
paint.setTypeface(Typeface.SANS_SERIF); 
paint.setColor(Color.BLACK); 
paint.setStyle(Paint.Style.FILL); 

Rect result = new Rect(); 
// Measure the text rectangle to get the height 
paint.getTextBounds(finalVal, 0, finalVal.length(), result); 

Ale jej nie działa, proszę o pomoc

EDIT

próbuję ustawić wysokość WebView dynamicznie na podstawie wysokość tekstu Otrzymuję wysokość tekstu dla pojedynczej linii, np. "Hello", ale jeśli w tekście są dwie linie: "My name is abc and my dads name is xyz and my moms name is 123" now its not getting the proper text height".

+0

co dokładnie nie działa? –

+0

zobacz moją edycję – Goofy

+0

hm ... brzmi dziwnie. Dlaczego musisz to robić? –

Odpowiedz

7

Spróbuj w ten sposób:

String finalVal ="Hello"; 

Paint paint = new Paint(); 
paint.setTextSize(18); 
paint.setTypeface(Typeface.SANS_SERIF); 
paint.setColor(Color.BLACK); 
paint.setStyle(Paint.Style.FILL); 

Rect result = new Rect(); 
paint.getTextBounds(finalVal, 0, finalVal.length(), result); 

Log.d("WIDTH  :", String.valueOf(result.width())); 
Log.d("HEIGHT  :", String.valueOf(result.height())); 

Oto wynik:

WIDTH  : 40 
HEIGHT  : 14 

Jeżeli ustawić ten,

String finalVal ="My name is abc and my dads name is xyz and my moms name is 123"; 

moje wyjście jest:

WIDTH  : 559 
HEIGHT  : 18 
+0

dziękuję wam, że już to zrobiłem i również otrzymuję tę samą odpowiedź, ale my ustawiamy ją na podstawie wysokości i szerokości urządzenia, ponieważ widzicie, że słowo "cześć" i wielowierszowa wysokość mają znaczną różnicę – Goofy

2

Można uzyskać wysokość tekstu od FontMetrics. Jest stały dla określonej czcionki i rozmiaru czcionki, bez względu na aktualny ciąg tekstowy.

Paint.FontMetrics fm = mTextPaint.getFontMetrics(); 
float textHeight = fm.descent - fm.ascent; 
float lineHeight = fm.bottom - fm.top + fm.leading; 

Zobacz moją pełniejszą odpowiedź here. Porównaję getTextBounds z FontMetrics w tej odpowiedzi.

Powiązane problemy