Почему мне нужно установить layout_height, когда заданы maxHeight и minHeight

#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" и автоматическим изменением размера текста. В результате содержимое было обернуто без изменения размера текста и без максимальной высоты.