在android布局xml文件中用于android:theme
和style
等视图的buttons
和textviews
属性之间的主要区别是什么?
如何使用它们?
以及何时使用哪个?
答案 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
应用于线性布局来更改线性布局中所有复选框的颜色。