Невозможно программно изменить размер текста при использовании авторазмера
У меня есть несколько TextViews, которые используют app:autoSizeTextType="uniform"
и что я хочу сделать, это проверить, какие из них имеют наименьший размер текста после автоматического изменения размера, а затем установить этот размер для всех других TextViews.
Итак, у меня есть такой метод, вызванный из onCreate()
private fun setLabelsFontSize(){
rootView.post {
val minTextSize = minOf(textView1.textSize, textView2.textSize, textView3.textSize)
textView1.setTextSize(TypedValue.COMPLEX_UNIT_PX, minTextSize)
textView2.setTextSize(TypedValue.COMPLEX_UNIT_PX, minTextSize)
textView3.setTextSize(TypedValue.COMPLEX_UNIT_PX, minTextSize)
}
}
Но ничего не происходит, размер текста остается прежним. Когда я удаляю app:autoSizeTextType="uniform"
из файла макета то нормально работает. Как я могу это исправить
1 ответ
Решение
Вызовите setTexSize так:
private fun setLabelsFontSize(){
rootView.post {
val minTextSize = minOf(textView1.textSize, textView2.textSize, textView3.textSize)
TextViewCompat.setAutoSizeTextTypeWithDefaults(textView1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE)
TextViewCompat.setAutoSizeTextTypeWithDefaults(textView2, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE)
TextViewCompat.setAutoSizeTextTypeWithDefaults(textView3, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE)
textView1.setTextSize(TypedValue.COMPLEX_UNIT_PX, minTextSize)
textView2.setTextSize(TypedValue.COMPLEX_UNIT_PX, minTextSize)
textView3.setTextSize(TypedValue.COMPLEX_UNIT_PX, minTextSize)
}
}