#android #textview
#Android #textview
Вопрос:
У меня есть textview, который я хотел бы масштабировать по мере роста контейнера. мне нужно поддерживать соотношение сторон по мере увеличения контейнера. как это можно сделать?
обычно мы задаем размер textview в sp, но для этого я хочу, чтобы textview был пропорционален в зависимости от размера его контейнера. В ConstraintLayout я делаю следующее:
<TextView
android:id="@ id/tv"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center_vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/glStart"
app:layout_constraintRight_toLeftOf="@id/glEnd"
app:layout_constraintTop_toTopOf="parent"
tools:text="My textview" />
который ограничивает textview, но не ограничивает сам текст:
как я могу заставить текст ограничиваться верхней и нижней частью контейнера вместо моего значения sp?
Ответ №1:
Добавьте эти атрибуты в свой TextView в свой макет
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="50sp"
android:autoSizeStepGranularity="2sp"
Ответ №2:
Разные телефоны имеют разный размер и плотность экрана, поэтому, когда вы указываете размер текста для просмотра в sp, он не будет реагировать и настраиваться в соответствии с размером контейнера.
Я думаю, что вы можете использовать библиотеку ssp и сохранить свои ограничения как есть.
Библиотека Android, которая предоставляет новую единицу измерения размера — ssp (scalable sp). Эта единица измерения размера масштабируется с размером экрана на основе единицы измерения размера sp (для текстов). Это может помочь разработчикам Android с поддержкой нескольких экранов.
Из документов:
зависимости
dependencies {
implementation 'com.intuit.ssp:ssp-android:1.0.6'
}
Как использовать
Просто добавьте в свой TextView нужные вам размеры (но в ssp), и он будет масштабироваться вверх / вниз в соответствии с вашим контейнером
android:textSize="@dimen/_40ssp"
Другим простым вариантом было бы использовать автоматическое масштабирование TextViews