Разница между setTextAppearance от кода и ресурса

Когда я вызываю setTextAppearance(this, android.R.style.TextAppearance_Medium) программно, я получаю шрифт среднего размера со светло-серым текстом.

Однако, когда я использую android:textAppearance="@android:style/TextAppearance.Medium" в xml, я получаю текст того же размера, но он окрашен в черный цвет.

В чем разница между ними?

Соответствующая часть xml файла выглядит следующим образом:

<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:text="Button" />

Код выглядит следующим образом:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button button = (Button)findViewById(R.id.button1);
    button.setText("This is a long text");
    //button.setTextAppearance(this, android.R.style.TextAppearance_Medium);
}

Ответ 1

правильный ответ setTextAppearance(context, android.R.style.TextAppearance_Large);

Ответ 2

Это не должно быть иначе. Единственный способ получить другой цвет - либо:

1) изменить цвет текста программно после вашего setTextAppearance

или

2) Ваши xml файлы содержат андроид: textColor с черным.

Если ваш xml-код содержит атрибут android: textColor, Android будет использовать его, а не тот, который определен в xml. Если вы вручную установитеTextAppearance, будет использоваться цвет стиля.

Следовательно, у вас, вероятно, есть android: textColor = "# 000000" в xml для этого элемента