#android #android-layout #textview #autosize
Вопрос:
Я хочу, чтобы высота моего TextView
текста автоматически layout_height
изменялась при достижении максимального/минимального размера текста.
Проблема: Чтобы автоматически изменить размер моего текста, я вынужден добавить a layout_height
. Бывают случаи, когда текст состоит из одного или двух слов, и случаи, когда слов много. Когда есть только одно или два слова, мой текст попадает autoSizeMaxTextSize
, но layout_height
остается на 200dp
месте, и тогда мой вид выглядит так, как будто между моим TextView
(заголовком) и нижним видом (телом) есть большое пространство, потому что я установил статическую высоту layout_height
. Когда у меня меньше текста, я не хочу, чтобы мой TextView
рост занимал все 200dp
, а вместо этого уменьшался до минимума.
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:minHeight="100dp"
android:maxHeight="200dp"
android:ellipsize="end"
android:gravity="start"
android:maxLength="70"
android:maxLines="4"
android:text="@{title.trim()}"
android:textAlignment="textStart"
android:textColor="?android:textColorPrimary"
android:textStyle="bold"
android:textSize="42sp"
app:autoSizeMaxTextSize="42sp"
app:autoSizeMinTextSize="8sp"
app:autoSizeTextType="uniform"/>
Я пробовал использовать android:layout_height="wrap_content"
в сочетании с android:minHeight="100dp"
и android:maxHeight="200dp"
и автоматическим изменением размера текста. В результате содержимое было обернуто без изменения размера текста и без максимальной высоты.
Кто-нибудь знает, как это сделать?
Ответ №1:
Потому что, когда родитель представления выкладывает его и вычисляет, сколько места ему нужно предоставить, он не знает об этих полях. Он знает только о полях layout_. Он полностью определяет его размер на основе этого и правил компоновки родителя. минимальный и максимальный размер текста используется только самим представлением при принятии решения о том, какой размер шрифта использовать.
Ах, вы задали другой вопрос в теле. Если вы хотите, чтобы размер текстового представления менялся в зависимости от длины текста, используйте wrap_content для высоты. Чтобы задать максимальную высоту, поместите ее в представление с layout_height 200 или используйте правила ограничения в ограничении, чтобы задать максимальную высоту.
Комментарии:
1. Я пробовал использовать
layout_height="wrap_content"
в сочетании сandroid:minHeight="100dp"
иandroid:maxHeight="200dp"
и автоматическим изменением размера текста. В результате содержимое было обернуто без изменения размера текста и без максимальной высоты.