Автоматическое изменение размера TextViewCompat не работает в ОС Android до 8.0 - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь использовать авторазмер текста. Моё приложение должно поддерживать Android 6.0 forward, поэтому мне нужно было использовать библиотеку Support, потому что авторазмер textview не был добавлен до 8.0. Мне нужно сделать это программно. Я пытался следовать этот ответ . Прямо сейчас мой код выглядит так:

val label = TextView(context)
label.text = i.label
val value = TextView(context)
value.text = i.valueFormatted
value.textSize = 48f
label.textSize = 36f

TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(value, 1, 48, 1, TypedValue.COMPLEX_UNIT_DIP)
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(label, 1, 24, 1, TypedValue.COMPLEX_UNIT_DIP)

В новых версиях Android это выглядит так, как я хочу:

enter image description here

Но в старых версиях все перепутано:

enter image description here

1 Ответ

0 голосов
/ 10 января 2019

Вы должны использовать AppCompatTextView, а не обычный TextView.

Посмотрите, как работает метод TextViewCompat :

public static void setAutoSizeTextTypeUniformWithConfiguration(
        @NonNull TextView textView,
        int autoSizeMinTextSize,
        int autoSizeMaxTextSize,
        int autoSizeStepGranularity,
        int unit) throws IllegalArgumentException {
    if (Build.VERSION.SDK_INT >= 27) {
        textView.setAutoSizeTextTypeUniformWithConfiguration(
                autoSizeMinTextSize, autoSizeMaxTextSize, autoSizeStepGranularity, unit);
    } else if (textView instanceof AutoSizeableTextView) {
        ((AutoSizeableTextView) textView).setAutoSizeTextTypeUniformWithConfiguration(
                autoSizeMinTextSize, autoSizeMaxTextSize, autoSizeStepGranularity, unit);
    }
}

Он будет работать для любого TextView на 8.1 или более поздней версии, потому что именно тогда он был добавлен в платформу. Но на любом другом уровне API переданный TextView должен реализовывать интерфейс AutoSizeableTextView, чего не делает собственный класс TextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...