У меня есть класс TextViewStyled , который расширяет TextView
В моей теме XML, как применить стиль ко всем моим виджетам TextViewStyled в действиях с выбранной темой?
У меня есть эта простая тема, но я хочу ограничить стиль Black Gold на TextViewStyled Widgets, не указав черное золото в атрибуте стиля TextViewStyled. Это одна из многих тем, которые будут переключаться динамически:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyThemeOneofMany" parent="android:Theme.NoTitleBar.Fullscreen"> <item name="android:???????????">@style/TextViewStyled_Black_Gold</item> </style> <style name="TextViewStyled_Black_Gold" parent="@android:style/Widget.TextView"> <item name="android:background">#1E1921</item> <item name="android:textColor">#A85E4F</item> <item name="android:textColorLink">#FFBC4F</item> <item name="android:textStyle">normal</item> </style> </resources>
Для темы AppCompat (2.3.3+):
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="android:textViewStyle">@style/PizzaSizeWidget</item> </style> <style name="CustomTextView" parent="@android:style/TextAppearance.Widget.TextView"> <item name="android:background">#1E1921</item> <item name="android:textColor">#A85E4F</item> <item name="android:textStyle">normal</item> <item name="android:textSize">93sp</item> </style>
Чтобы задать стиль для TextViews в пользовательской теме, используйте имя «android: textViewStyle»:
<style name="MyThemeOneofMany" parent="android:Theme.NoTitleBar.Fullscreen"> <item name="android:textViewStyle">@style/TextViewStyled_Black_Gold</item> </style>
Нашел его, просматривая официальные темы android.xml.
Я обнаружил, что обновление стилей работает при переопределении базового класса textview
после события inflation
.