Описание материалов компонентов темы? - PullRequest
1 голос
/ 04 февраля 2020

В настоящее время я начинаю работу с темами компонентов материалов. В руководстве Getting Started упоминаются следующие темы:

Theme.MaterialComponents
Theme.MaterialComponents.NoActionBar
Theme.MaterialComponents.Light
Theme.MaterialComponents.Light.NoActionBar
Theme.MaterialComponents.Light.DarkActionBar
Theme.MaterialComponents.DayNight
Theme.MaterialComponents.DayNight.NoActionBar
Theme.MaterialComponents.DayNight.DarkActionBar

Хотя для них нет описания. Где я могу найти более подробную информацию об этих темах, или кто-то может так любезно объяснить их в ответе? Например:

  1. Что означает [..].NoActionBar? Если я не хочу панель действий, я не включаю ее в файл макета, поэтому я действительно не получаю это.
  2. Когда бы я использовал только Theme.MaterialComponents? Или я бы всегда использовал Theme.MaterialComponents.Light или Theme.MaterialComponents.DayNight?
  3. Как выглядят эти темы? Я не смог найти предварительный просмотр и не хочу испытать их все самостоятельно - может занять некоторое время со всеми виджетами, доступными на Android.
  4. Что определяют эти темы? Только цвета? Стиль текста? Семейство шрифтов?

1 Ответ

1 голос
/ 05 февраля 2020

Я уверен, что мне не удастся ответить на все ваши вопросы исчерпывающе, но я поделюсь некоторыми мыслями, может быть, это продвинет вас на один или два шага дальше:

Что означает [..]. NoActionBar?

Вы должны использовать тему, заканчивающуюся на ".NoActionBar", если вы не хотите, чтобы среда выполнения добавляла ActionBar к Activity, возможно, потому что вы используйте Toolbar. Если вы выберете, например, Theme.MaterialComponents.Light и также используете Toolbar, вы заметите, что теперь ваше приложение будет отображаться с двумя ActionBar s

Обратите внимание, что если какая-то тема называется «MyTheme» затем тема с префиксом «MyTheme». унаследует все от "MyTheme". Так что Theme.MaterialComponents.Light.NoActionBar - это почти то же самое, что и Theme.MaterialComponents.Light, за исключением ActionBar.

Так что, если вы действительно не хотите ActionBar, вам следует выбрать .NoActionBar версию и не включать суррогат (Toolbar) в файлы макета.

Что определяют эти темы? Только цвета? Стиль текста? Семейство шрифтов?

Они делают это, но они также определяют размеры, поля и поведение. В дополнение к этому, некоторые из них имеют специальные комбинации стилей для определенных виджетов (например, style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox" для TextInputLayout)

Для глубокого погружения в то, на какие свойства может влиять тема, вы можете посмотреть у источника themes_material. xml

Когда я буду использовать только Theme.MaterialComponents? Или я всегда буду использовать Theme.MaterialComponents.Light или Theme.MaterialComponents.DayNight?

Поскольку Theme.MaterialComponents является родительской темой Theme.MaterialComponents.Light, у них много общего. Основное отличие состоит в том, что первое предполагает, что ваше приложение будет иметь темный фон (поэтому текст должен быть белым), тогда как второе будет иметь черный текст и предполагает, что фон вашего приложения будет светлым.

Как правило, один будет попробуйте использовать определенную тему в качестве шаблона, которую затем можно / нужно настроить - например, с помощью специального цветового акцента.

Как выглядят эти темы?

Вы можете получить общее представление, переключившись с одного на другое в своем собственном небольшом приложении.

Это правда, что не существует ни одного единственного источника информации (иначе android тематическая библия). Вы уже нашли material.io , но, возможно, раздел Стили и темы от разработчика. android .com или это сообщение в блоге на DayNight - Добавление темной темы в ваше приложение прольет еще немного света.

...