Невозможно программно изменить размер текста при использовании авторазмера

У меня есть несколько 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)
    }
}
Другие вопросы по тегам