Добавление компонентов программно отличается от стиля в макете XML - PullRequest
0 голосов
/ 05 июня 2019

Компоненты (текстовые поля и поля редактирования), определенные в XML макета, очень отличаются от тех, которые я добавляю программно.

Я попытался применить тот же стиль textAppearance программно, как и в моем XML. Я попытался позвонить setTheme() после добавления компонентов тоже. Нет разницы.

    TextView tv10 = new TextView(getApplicationContext());
    tv10.setText("Back width");
    EditText tv11 = new EditText(getApplicationContext());
    tv11.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_CLASS_NUMBER);

TextView - с мелким шрифтом и серым текстом, EditText - с черным фоном и серым текстом. Компоненты должны быть добавлены программно из-за опций, выбранных пользователем. Эти пользовательские варианты определены в XML и соответствуют ожидаемой цветовой схеме, которая является настройками Android Studio по умолчанию. (Черный текст на белом фоне)

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Вы не должны использовать контекст приложения для представлений. Только контекст деятельности. Также вы можете передать стиль как параметр, когда создаете представление в коде.

0 голосов
/ 06 июня 2019

Как сказал Ямко, стиль можно передать в конструкторе

var textView = TextView(context, null, R.style.LoginBodyTextViewStyle)

где стиль может быть что-то вроде

<style name="LoginBodyTextViewStyle" parent="android:Widget.TextView">
        <item name="android:textStyle">normal</item>
        <item name="android:fontFamily">sans-serif</item>
        <item name="android:textSize">@dimen/text_size_default</item>
        <item name="android:textColor">@color/grey</item>
</style>
...