Чтобы настроить пользовательский интерфейс с темами, вам нужно определить атрибуты, которые вы хотите настроить внутри своих тем, и использовать ссылки на эти атрибуты в макетах (например, attr/backgroundColor
).
В источниках Android есть три файлакоторые используются для этой цели: attrs.xml , styles.xml и themes.xml .Если вам нужны некоторые пользовательские атрибуты для настройки, вы должны объявить их в attrs.xml .Если вы собираетесь использовать только предопределенные атрибуты Android, вам не нужно создавать этот файл.
<declare-styleable name="SportTheme">
<attr name="customAttribute" format="color" />
<attr name="sportLabelStyle" format="reference" />
</declare-styleable>
Файл styles.xml используется для определения наборов значений атрибутов,Например, вы можете определить разные наборы стилей для каждого виджета.
<style name="Widget.TextView.SportLabel" parent="@android:style/Widget.TextView">
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">20sp</item>
</style>
themes.xml - основной файл, используемый для настройки.Все темы обычно определяются в этом файле.Вы можете настроить что-то несколькими способами.Например, вы можете определить значение по умолчанию в теме и ссылаться на него из макета.Также вы можете определить ссылку на стиль.
<style name="Theme.FootballTheme" parent="@android:style/Theme">
<!-- define value for predefined Android attribute -->
<item name="android:colorBackground">@android:color/white</item>
<!-- define value for custom attribute -->
<item name="customAttribute">@android:color/black</item>
<!-- define reference to a style -->
<item name="sportLabelStyle">@style/Widget.TextView.SportLabel</item>
</style>
layout.xml
<TextView
android:background="?android:attr/colorBackground"
android:textColor="?attr/customAttribute"
style="?attr/sportLabelStyle" />
Обратите внимание, что стиль используется без пространства имен android
.Это не опечатка.
Поэтому, если вы хотите настроить макет, используя темы, вы можете создать несколько тем и определить значения по умолчанию для атрибутов и наборов атрибутов (стилей) и ссылаться на эти значения, используя
?[android:]attr/attributeName
Звучит сложно, но это не совсем так.Вы можете использовать ресурсы Android в качестве примера стиля.
Пожалуйста, задайте свой вопрос, если что-то не понятно.