- Добавление прослушивателя глобального макета на root макета
- Внутри обратного вызова слушателя получите размер текста для каждого Textview
- Получите минимум среди этих размеров текста
- отключить функцию автоматического размера с помощью TextViewCompat
Установить размер текста для всех текстовых представлений (минимум получен)
root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
root.getViewTreeObserver().removeOnGlobalLayoutListener(this);
float txtSize1 = btn1.getTextSize();
float txtSize2 = btn2.getTextSize();
float minSize = Math.min(txtSize1, txtSize2);
TextViewCompat.setAutoSizeTextTypeWithDefaults(btn1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE);
TextViewCompat.setAutoSizeTextTypeWithDefaults(btn2, TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE);
btn1.setTextSize(TypedValue.COMPLEX_UNIT_PX, minSize);
btn2.setTextSize(TypedValue.COMPLEX_UNIT_PX, minSize);
}
});
Если у вас есть динам c текст в любом из Textviews, то вы не должны удалять глобальный макет слушателя Также, когда текст изменяется, установите AutoSizeTextType на единообразный для всех TextViews и макета запроса вызова на root, пример фрагмента после изменения текста ниже
TextViewCompat.setAutoSizeTextTypeWithDefaults(btn1, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
TextViewCompat.setAutoSizeTextTypeWithDefaults(btn2, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
root.requestLayout();