У меня есть текст под названием Hello
теперь мне нужно применить шрифты для этого, скажем, 12 или 18 сейчас, как только мы применим шрифт к тексту, размер текста увеличивается.
Поэтому теперь мне нужно получить высоту текста, включая размер шрифта, используя краску.
Я попробовал с краской следующее:
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);
Но он не работает, пожалуйста, помогите
РЕДАКТИРОВАТЬ
Я пытаюсь установить высоту веб-просмотра динамически на основе textheight, я получаю высоту текста для одной строки, например "Hello"
но если в тексте есть две строки "My name is abc and my dads name is xyz and my moms name is 123" now its not getting the proper text height".
Попробуйте так:
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()));
Вот результат:
WIDTH : 40 HEIGHT : 14
Если я установил это,
String finalVal ="My name is abc and my dads name is xyz and my moms name is 123";
Мой выход:
WIDTH : 559 HEIGHT : 18
Вы можете получить высоту текста из FontMetrics . Он является постоянным для конкретного шрифта и размера шрифта, независимо от текущей текстовой строки.
Paint.FontMetrics fm = mTextPaint.getFontMetrics(); float textHeight = fm.descent - fm.ascent; float lineHeight = fm.bottom - fm.top + fm.leading;
См. Мой более полный ответ здесь . Я сравниваю getTextBounds
с FontMetrics
в этом ответе.