если вы не знаете размер textview. например Вы помещаете их в linearlayout и устанавливаете высоту или ширину в 0dp. тогда я получил решение. вам нужно установитьAutoSizeTextTypeWithDefaults в событии OnSizeChanged.
ользую новую функцию автоматического изменения размера, добавленную в библиотеку поддержки 26. Я прочитал документацию, которую можно найти здесь:https://developer.android.com/preview/features/autosizing-textview.html
Я полагаю, что это должно работать следующим образом: Вы можете включить автоматическое изменение размера с этим атрибутом:app:autoSizeTextType="uniform"
, я думаю чтоTextView
следует использовать все доступное пространство для отображения всего текста (а не только части - он не должен быть обрезан) иtextSize
должно быть как можно большим. Если вам нужно ограничить максимальный или минимальный размер текста, вы можете использовать эти два атрибута:
app:autoSizeMinTextSize="XXsp" // (you can also use px or dp values.)
или же
app:autoSizeMaxTextSize="XXsp"
Все идет нормально. Допустим, мне нужен TextView с шириной 56dp. У меня есть тексты с другой длиной, и я хочу установить эти тексты на этоTextView
, Размер должен быть автоматически изменен, чтобы отобразить весь текст (все символы + не обрезанные) в максимально возможном размере.textSize
.
Это мой TextView:
<android.support.v7.widget.AppCompatTextView
android:id="@+id/vName"
style="@style/TextView.AutoSize"
android:layout_width="56dp"
android:gravity="bottom|center_horizontal"
android:maxLines="1"
app:autoSizeMinTextSize="1px"
app:autoSizeTextType="uniform"
app:layout_constraintBottom_toTopOf="@id/vGuideline"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
К сожалению, текстовое представление обрезано. Я хотел установить эту строку как текст для TextView выше: «Groupa», но это результат:
(TextView находится внутри ConstraintLayout с желтым фоном круга.)
Как видите, текстовое представление не изменяется вообще. У вас есть идеи, что делать?
Благодарю.