Ответ
Для организации стилей в Android приложении лучше использовать темы (Themes) и стили (Styles) в res/values/themes.xml и styles.xml. Основные принципы:
- Темы - глобальные атрибуты для всего приложения/активности:
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/purple_500</item>
<item name="colorOnPrimary">@color/white</item>
</style>
- Стили - повторяемые наборы атрибутов для конкретных View:
<style name="MyButtonStyle" parent="Widget.Material3.Button">
<item name="android:textColor">@color/white</item>
<item name="android:backgroundTint">@color/purple_500</item>
</style>
- Лучшие практики:
- Используйте Material Design 3 как базовую тему
- Разделяйте светлую и темную тему через
-nightквалификаторы - Выносите цвета в отдельный
colors.xml - Для сложных стилей используйте
TextAppearanceиShapeAppearance - Избегайте inline-стилей в разметке
Ответ 18+ 🔞
Слушай, я тут смотрю на твой код и думаю — ёпта, ну сколько можно мучать эти inline-стили в разметке! Это же пизда рулю, честно. Прям как в 2002-м году делают.
Вот смотри, чтобы не быть распиздяем, тебе надо юзать нормальные темы и стили. Отдельно, в своих файликах. Первое — Темы. Это как общий дресс-код для всего приложения. Засовываешь их в res/values/themes.xml.
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/purple_500</item>
<item name="colorOnPrimary">@color/white</item>
</style>
Видишь? Всё чётко. colorPrimary — это твой основной цвет, типа фирменный такой. colorOnPrimary — это цвет текста, который будет поверх этого самого purple_500. Без этого — манда с ушами получится, поверь.
Дальше, второе — Стили. Это уже не для всего приложения, а для конкретных штук, типа кнопок или текстовых полей. Их кидаешь в styles.xml.
<style name="MyButtonStyle" parent="Widget.Material3.Button">
<item name="android:textColor">@color/white</item>
<item name="android:backgroundTint">@color/purple_500</item>
</style>
Вот создал стиль для кнопки. И теперь в разметке вместо того, чтобы каждый раз прописывать android:textColor и android:backgroundTint, ты просто пишешь style="@style/MyButtonStyle". И волнение ебать — все кнопки сразу одинаковые! Хуй с горы, а не подход.
Теперь, насчёт лучших практик, тут без вариантов:
- Бери за основу Material Design 3. Не выёбывайся, не изобретай велосипед. Они уже всё продумали, там и темы, и стили готовые есть. Просто наследуйся от них, как я в примере показал.
- Тёмная тема — это не опция, а must have. Все её ждут. Делается просто: создаёшь папку
res/values-night, кидаешь туда такой жеthemes.xml, но с другими цветами — для тёмной темы. Система сама всё подхватит. Не сделаешь — засмеют. - Цвета — в отдельный
colors.xml. Не трави душу, не пихай хекс-коды прямо в стили. Вынеси их отдельно. Потом, если дизайнер придёт и скажет «смени этот фиолетовый на перламутровый», ты поменяешь в одном месте, а не будешь полдня по всем файлам ползать. - Для сложных вещей есть
TextAppearanceиShapeAppearance. Хочешь сделать текст особенный или кнопку скруглённую — используй эти специальные стили. Так чище. - И главное, блядь: избегай inline-стилей в разметке как огня. Это смерд пердящий в коде. Серьёзно. Ты один раз напишешь
android:textSize="16sp"прямо вTextView, потом такихTextViewбудет овердохуища, и когда понадобится размер поменять, ты просто охуеешь. Выноси в стили. Доверься.
Вот и вся магия. Сначала кажется, что возни много, но потом, когда приложение расти начнёт, ты сам себе спасибо скажешь. А иначе — кот сука собака, один сплошной бардак.