Как масштабировать текст до высоты TextView, но оборачивать содержимое по горизонтали - PullRequest
0 голосов
/ 02 декабря 2019

У меня фиксированная высота в dp и layout_width="wrap_content" для моих TextView и textSize в sp. Я не хочу фиксированный размер текста (из-за переменной плотности экрана), и скорее я хотел бы, чтобы текст масштабировался вертикально до фиксированных границ просмотра, а ширина TextView была перенесена на текст. Я попытался использовать autoSizeTextType="uniform", но текст начал переноситься на следующую строку, что было странно. Кто-нибудь смог выполнить это вертикальное масштабирование с layout_width="wrap_content" для TextView?

<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/name"
    android:layout_height="50dp"
    android:layout_width="wrap_content"
    android:textColor="@color/white"
    android:autoSizeTextType="uniform"
    android:text="Some Text"
    android:background="@drawable/shape_tag_name"
    />

Ответы [ 3 ]

0 голосов
/ 02 декабря 2019

Вы пробовали использовать app:autoSizeTextType="uniform"? Использование android:autoSizeTextType="uniform" работает только на уровне API 26 или выше.

Еще одна вещь, попробуйте использовать android:maxLines="1".

Я рекомендую вам посмотреть это руководство

0 голосов
/ 02 декабря 2019

Добавьте две строки в текстовое представление:

        android:maxLines="1"
        android:ellipsize="end"

Ваш код:

 <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/name"
        android:layout_height="50dp"
        android:layout_width="wrap_content"
        android:maxLines="1"
        android:ellipsize="end"
        android:textColor="@color/white"
        android:autoSizeTextType="uniform"
        android:text="Some Text"
        android:background="@drawable/shape_tag_name"
        />
0 голосов
/ 02 декабря 2019

Чтобы определить диапазон размеров текста и размерности в XML, используйте пространство имен android и установите следующие атрибуты: Установите для атрибута autoSizeText либо none, либо равномерный. none - это значение по умолчанию, а функцияiform позволяет TextView равномерно масштабироваться по горизонтальной и вертикальной осям. Установите атрибуты autoSizeMinTextSize, autoSizeMaxTextSize и autoSizeStepGranularity , чтобы определить размеры для автоматического изменения размера TextView .

<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:autoSizeTextType="uniform"
    android:autoSizeMinTextSize="12sp"
    android:autoSizeMaxTextSize="100sp"
    android:autoSizeStepGranularity="2sp" />
...