Проблема, с которой я столкнулся, заключается в том, что установка высоты вашего просмотра равной wrap_content
позволяет уменьшать размер текста, но текст никогда больше не станет больше.Вот почему документация рекомендует не использовать wrap_content
для размера представления.Однако я обнаружил, что если вы отключите автоматическое изменение размера, установите размер текста равным максимальному, а затем снова включите автоматическое изменение размера, размер текста сбрасывается до наибольшего размера и при необходимости уменьшается.
Таким образом, мое представление в XML будет выглядеть так:
<android.support.v7.widget.AppCompatTextView
android:id="@+id/text_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textSize="42sp"
app:autoSizeMinTextSize="26dp"
app:autoSizeMaxTextSize="42dp"
app:autoSizeTextType="none"/>
Затем в моем ViewHolder
, когда я связываю свой текст с представлением:
TextView title = view.findViewById(R.id.text_title);
String titleValue = "Some Title Value";
// Turn off auto-sizing text.
TextViewCompat.setAutoSizeTextTypeWithDefaults(title,
TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE);
// Bump text size back up to the max value.
title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 42);
// Set your text as normal.
title.setText(titleValue);
// Post a runnable to re-enable auto-sizing text so that it occurs
// after the view is laid out and measured at max text size.
title.post(new Runnable() {
@Override
public void run() {
TextViewCompat
.setAutoSizeTextTypeUniformWithConfiguration(title,
26, 42, 1, TypedValue.COMPLEX_UNIT_DIP);
}
});