Подтвердить что ты не робот

SetTextAppearance устарел на уровне API 23

public void setTextAppearance (контекст контекста, int resId) Добавлено в API уровня 1
Этот метод не использовался в API 23. Вместо этого используйте setTextAppearance (int).

Мой вопрос. Почему он устарел? Почему ему больше не нужно Context? И самое главное, как использовать setTextAppearance(int resId) для более старых версий?

4b9b3361

Ответ 1

  • как использовать setTextAppearance(int resId) для более старых версий?

    Используйте его следующим образом:

    if (Build.VERSION.SDK_INT < 23) {
        super.setTextAppearance(context, resId);
    } else {
        super.setTextAppearance(resId);
    }
    

    За дополнительной информацией: fooobar.com/questions/189074/...

  • Почему это устарело? Почему он больше не нуждается в Контексте?

    Причина, по которой она устарела, не нуждается в передаче context. Он использует контекст по умолчанию, предоставляемый View. Посмотрите на исходный код ниже. Это должно объяснить это.

    public void setTextAppearance(@StyleRes int resId) {
         setTextAppearance(mContext, resId);
    }
    

    mContext здесь определяется в классе View. Поэтому вам больше не нужно передавать context этому методу. TextView будет использовать контекст, предоставленный ему во время его создания. Это имеет смысл.

Ответ 2

Вы можете использовать TextViewCompat в библиотеке поддержки:

    import android.support.v4.widget.TextViewCompat

    // ...

    TextViewCompat.setTextAppearance(view, resId)

Внутри он получает контекст из представления (view.getContext()) в API < 23.

Источник для TextViewCompat

Источник для TextView (API23)