style和android有什么区别:主题属性?

时间:2018-02-17 17:17:54

标签: android

在android布局xml文件中用于android:themestyle等视图的buttonstextviews属性之间的主要区别是什么?

如何使用它们?

以及何时使用哪个?

1 个答案:

答案 0 :(得分:18)

有两个主要区别:

首先,通过style分配给视图的属性仅适用于该视图,而通过android:theme分配给它的属性将适用于该视图及其所有子视图。例如,请考虑以下样式资源:

<style name="my_background">
    <item name="android:background">@drawable/gradient</item>
</style>

如果我们使用LinearLayout将其应用于具有三个子TextView的{​​{1}},则线性布局将使用渐变背景绘制,但文本视图的背景将保持不变

如果我们使用style="@style/my_background"将其应用于LinearLayout,则线性布局和三个文本视图中的每一个都将使用渐变作为背景。

第二个关键区别是,如果某些属性在该视图的主题中定义,则它们仅影响视图。例如,请考虑以下样式资源:

android:theme="@style/my_background"

如果我使用<style name="checkboxes"> <item name="colorAccent">#caf</item> <item name="colorControlNormal">#caf</item> </style> 将其应用于CheckBox,则不会发生任何事情。如果我使用style="@style/checkboxes"应用它,则复选框的颜色会发生变化。

就像第一条规则所说的那样,包含主题属性的样式将应用于具有android:theme="@style/checkboxes"属性的视图的所有子项。因此,我可以通过将android:theme应用于线性布局来更改线性布局中所有复选框的颜色。