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"
недостаточно. Когда вы используетеuniform
type, вы также должны указать степень детализации. Попробуйте использовать следующие атрибуты:
<androidx.appcompat.widget.AppCompatTextView
...
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="24sp"
app:autoSizeStepGranularity="1sp"
... />