Автоматическое изменение размера Android TextView занимает больше места, чем обычный TextView

#android #textview #android-textview-autosize

#Android #textview #android-textview-автоматическое изменение размера

Вопрос:

У меня есть этот простой фрагмент кода, в котором я хочу, чтобы содержимое TextView было изменено. При первоначальном впечатлении текст внутри TextView имеет уменьшенное содержимое, и это здорово, но после включения границ макета я вижу, что TextView с автоматическим изменением размера на самом деле занимает больше места на экране, чем TextView, который не подходит для того же содержимого.

Вот мой код:

 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@ id/tv_1"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:maxLines="3"
        android:text="Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello"
        app:autoSizeMaxTextSize="12sp"
        app:autoSizeMinTextSize="4sp"
        app:autoSizeTextType="uniform"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@ id/tv_2"
        app:layout_constraintHorizontal_chainStyle="spread"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <TextView
        android:id="@ id/tv_2"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:maxLines="3"
        android:ellipsize="end"
        android:text="Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello"
        android:textSize="12sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@ id/tv_1"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>
 

Скриншот

Я что-то упустил? Любой ввод будет высоко оценен.

Ответ №1:

В Android 8.0 (уровень API 26) и выше вы можете указать TextView автоматически увеличивать или уменьшать размер текста, чтобы заполнить его макет на основе характеристик и границ TextView.

Настройка по умолчанию позволяет автоматически масштабировать TextView равномерно по горизонтальной и вертикальной осям.

https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview

Комментарии:

1. На самом деле я пытаюсь понять, могу ли я как-то ограничить прямоугольник, в котором отображается текст, сохраняя при этом wrap_content