AppCompatTextView autoSizeTextType не работает

В моем activity.xml, У меня есть два AppCompatTextView это выглядит так:

<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/user_full_name_text_view"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_marginStart="16dp"
    android:layout_marginEnd="8dp"
    android:fontFamily="@font/roboto_bold"
    android:maxLines="1"
    android:text="@string/full_name"
    android:textColor="@android:color/white"
    app:autoSizeTextType="uniform"
    app:layout_constraintBottom_toTopOf="@+id/guideline"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toEndOf="@+id/profile_image"
    app:layout_constraintTop_toTopOf="parent" />

<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/user_name_text_view"
    android:layout_width="0dp"
    android:layout_height="20dp"
    android:layout_marginEnd="8dp"
    android:fontFamily="@font/roboto"
    android:maxLines="1"
    android:text="@string/username"
    android:textColor="@android:color/white"
    app:autoSizeTextType="uniform"
    app:layout_constraintBottom_toTopOf="@+id/guideline"
    app:layout_constraintEnd_toEndOf="@+id/user_view"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="@+id/user_full_name_text_view"
    app:layout_constraintTop_toBottomOf="@+id/user_full_name_text_view"
    app:layout_constraintVertical_bias="0.0" />

На моей вкладке дизайна эта часть деятельности выглядит так:

Теперь это выглядит правильно, поскольку текст имеет правильный автоматический размер, чтобы заполнить высоту первого AppCompatTextView. Однако когда я запускаю свое приложение на мобильном устройстве, оно выглядит так:

Почему размер текста не изменяется автоматически? Как исправить это, чтобы текст занимал всю ширину и высотуAppCompatTextView?

2 ответа

Автоматический размер не работает сwrap_content, вероятно, потому, что ему нужно знать свой размер, прежде чем он сможет сказать, насколько большим будет его содержимое. Происходит ли что-нибудь из этого где-нибудь в иерархии, например, в макете вашегоAppCompatTextViews находятся в?

Сейчас ваша ширина зависит от того, насколько широким parent есть, но если это wrap_content(или его родитель и т. д.), то в конечном итоге это текстовое представление спросят, насколько широким оно должно быть, и он запутается

Думаю, проблема в том, что добавление app:autoSizeTextType="uniform"недостаточно. Когда вы используетеuniformtype, вы также должны указать степень детализации. Попробуйте использовать следующие атрибуты:

<androidx.appcompat.widget.AppCompatTextView
    ...
    app:autoSizeTextType="uniform"
    app:autoSizeMinTextSize="12sp"
    app:autoSizeMaxTextSize="24sp"
    app:autoSizeStepGranularity="1sp"
    ... />
Другие вопросы по тегам