Как организовать тему в приложении

«Как организовать тему в приложении» — вопрос из категории UI и Views, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для организации темы в Android приложении используйте Theme.AppCompat (или Theme.MaterialComponents для MD3) в styles.xml. Основные подходы:

  1. Базовые стили – определите родительскую тему в res/values/styles.xml:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
    <item name="colorPrimary">@color/purple_500</item>
    <item name="colorOnPrimary">@color/white</item>
    <item name="colorSecondary">@color/teal_200</item>
</style>
  1. Ночная тема – добавьте альтернативы в res/values-night/:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.Dark">
    <item name="colorPrimary">@color/purple_200</item>
</style>
  1. Динамическое переключение (Kotlin):
AppCompatDelegate.setDefaultNightMode(
    if (isDark) MODE_NIGHT_YES else MODE_NIGHT_NO
)

Ключевые атрибуты:

  • colorPrimary – основной брендовый цвет
  • colorSurface – фон компонентов
  • textColor – цвет текста

Для кастомизации используйте ThemeOverlay для отдельных элементов. Все цвета должны быть определены в colors.xml с day/night вариантами.