Ответ 1
Нет, нет масштабирования шрифтов в TextView
. Вы можете перегрузить метод onDraw()
дочерним элементом TextView
, но TextView
не поддерживает автоматическое масштабирование текста.
Взгляните на этот другой вопрос .
Есть ли способ, чтобы TextView выбирал размер шрифта таким образом, чтобы он заполнял все свободное пространство? Например:
<LinearLayout
layout_width="fill_parent"
layout_height="50dip" >
<TextView
layout_width="fill_parent"
layout_height="fill_parent"
textSize="scale?" />
</LinearLayout>
Спасибо
Нет, нет масштабирования шрифтов в TextView
. Вы можете перегрузить метод onDraw()
дочерним элементом TextView
, но TextView
не поддерживает автоматическое масштабирование текста.
Взгляните на этот другой вопрос .
Как и в ответе Nick Campion, я использовал цикл и статический макет для итерации до нужного размера. Мои требования должны были соответствовать ширине и использовать не более одной строки (без эллипсов):
int i = 0;
while(i < 2) {
layout = new StaticLayout(text, textPaint, w, Alignment.ALIGN_NORMAL, 1, 0, true);
i = layout.getLineCount();
textSize += 2;
textPaint.setTextSize(textSize);
}
textPaint.setTextSize(textSize*0.95f);
Просто обновить, от API 26 (Android 8.0) TextViews имеет атрибут для масштабирования текста по горизонтальной и вертикальной осям
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform" />
Посмотрите на Автосогласование TextViews