android:theme
和style
属性是在Android布局XML文件中用于视图(如和)的关键区别是什么?
它们如何使用?
何时使用哪个?
android:theme
和style
属性是在Android布局XML文件中用于视图(如和)的关键区别是什么?
它们如何使用?
何时使用哪个?
有两个关键区别:
首先,通过style
分配给视图的属性仅适用于该视图,而通过android:theme
分配给它的属性将同时应用于该视图及其所有子项。例如,请考虑此样式资源:
<style name="my_background">
<item name="android:background">@drawable/gradient</item>
</style>
如果我们使用 style="@style/my_background"
将其应用于具有三个子 TextView
的 LinearLayout
,那么线性布局将绘制出渐变背景,但是文本视图的背景将保持不变。android:theme="@style/my_background"
应用于 LinearLayout
,则线性布局和每个文本视图都将使用渐变作为它们的背景。<style name="checkboxes">
<item name="colorAccent">#caf</item>
<item name="colorControlNormal">#caf</item>
</style>
如果我使用 style="@style/checkboxes"
将其应用于 CheckBox
,则不会发生任何事情。相反,如果我使用 android:theme="@style/checkboxes"
,则复选框的颜色将会改变。
就像第一条规则所说的那样,包含主题属性的样式将应用于具有 android:theme
属性的视图的所有子元素。因此,我可以通过将 android:theme="@style/checkboxes"
应用于我的线性布局来更改线性布局中所有复选框的颜色。
Toolbar
,并注意到标题和溢出图标得到了自己的较小的渐变色。 - Ben P.
android:theme
与 布局 或 视图 的示例。但是他们肯定展示了使用android:theme
与 应用程序 和 活动 的示例,所以我认为android:theme
不适用于 布局 和 视图。 - Vaibhav Surana