我目前正在开始使用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
尽管没有针对他们的描述。在哪里可以找到有关这些主题的更多详细信息,或者有谁愿意在答案中解释它们?例如:
[..].NoActionBar
是什么意思?如果我不想要操作栏,则不将其包含在布局文件中,所以我真的不知道。Theme.MaterialComponents
?还是我总是使用Theme.MaterialComponents.Light
或Theme.MaterialComponents.DayNight
?答案 0 :(得分:2)
我敢肯定,我不会设法详尽地回答您的所有问题,但我会分享一些想法,也许它将使您走一两个步骤:
[..]。NoActionBar是什么意思?
如果您不希望运行时将ActionBar
添加到Activity
(可能是因为使用Toolbar
),则应使用以“ .NoActionBar”结尾的主题。例如,如果您选择Theme.MaterialComponents.Light
并同时使用Toolbar
,您会注意到现在您的应用将使用两个ActionBar
呈现
请注意,如果某个主题称为“ 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,但也许Styles and Themes的developer.android.com部分或DayNight — Adding a dark theme to your app上的此博客文章会提供更多启示。