使用自动调整大小时无法以编程方式更改文本大小

时间:2019-06-21 07:47:14

标签: android textview android-textview-autosize

我有多个使用app:autoSizeTextType="uniform"的TextView,我想做的是检查自动调整大小后哪些文本具有最小的文字大小,然后将该大小设置为所有其他TextView。

所以我有从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 个答案:

答案 0 :(得分: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)
    }
}