材料组件主题的描述?

时间:2020-02-04 18:38:17

标签: android themes material-components

我目前正在开始使用Material组件主题。 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.LightTheme.MaterialComponents.DayNight
  3. 这些主题看起来如何?我找不到任何预览,也不想自己尝试全部尝试-可能需要一些时间才能使用Android上所有可用的小部件。
  4. 这些主题定义了什么?只有颜色?文字样式?字体家族?

1 个答案:

答案 0 :(得分:2)

我敢肯定,我不会设法详尽地回答您的所有问题,但我会分享一些想法,也许它将使您走一两个步骤:

[..]。NoActionBar是什么意思?

如果您不希望运行时将ActionBar添加到Activity(可能是因为使用Toolbar),则应使用以“ .NoActionBar”结尾的主题。例如,如果您选择Theme.MaterialComponents.Light并同时使用Toolbar,您会注意到现在您的应用将使用两个ActionBar呈现

请注意,如果某个主题称为“ MyTheme”,则以“ MyTheme”为前缀的主题。将从“ MyTheme”继承所有内容。因此,Theme.MaterialComponents.Light.NoActionBarTheme.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.MaterialComponentsTheme.MaterialComponents.Light的父主题,因此它们有很多共同点。主要区别在于,第一个假定您的应用程序具有深色背景(因此文本应为白色),而第二个假定您的应用程序将具有黑色文本,并假定您的应用程序的背景为浅色。

通常,人们会尝试使用某个主题作为模板,然后可以/必须对其进行自定义-例如使用特殊的强调色。

这些主题看起来如何?

您可以在自己的小型示例应用程序中将一个切换为另一个,从而获得一个总体思路。

确实,没有一个单一的信息来源(又名android主题圣经)。您已经找到了material.io,但也许Styles and Themesdeveloper.android.com部分或DayNight — Adding a dark theme to your app上的此博客文章会提供更多启示。