【问题标题】:What is the difference between style and android:theme attributes?style 和 android:theme 属性有什么区别?
【发布时间】:2018-02-17 17:17:53
【问题描述】:

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

如何使用它们?

什么时候用哪个?

【问题讨论】:

  • 感谢@ADM 的链接,我已经提到了有关主题的android 文档,但没有明确提及或使用android:theme布局 或查看。但他们肯定展示了一个将android:themeapplicationactivity 一起使用的示例,所以我认为android:theme 是否不打算与layouts 一起使用b> 和 观看次数

标签: android


【解决方案1】:

有两个主要区别:

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

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

如果我们通过使用style="@style/my_background" 将其应用于具有三个子TextViews 的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" 应用于我的线性布局来更改线性布局中所有复选框的颜色。

【讨论】:

  • 有趣。你怎么知道哪些属性只在主题而不是样式中使用时才会影响视图?某处有清单吗?
  • 。 . .将适用于该视图及其所有子视图。 -- 这个认识让我难过了几个小时。请问您是如何发现这些信息的?
  • @CzarMatt 不幸的是,答案是“实验性的”。在我正在从事的一个真实项目中,我观察到了答案中描述的确切场景。我为我的Toolbar 应用了一个设置渐变背景的主题,并注意到标题和溢出图标有自己的较小渐变。
  • @BenP。感谢您的回复 - 我非常了解这种感觉。此外,再次梳理文档后,发现这里有一个注释标注:developer.android.com/guide/topics/ui/look-and-feel/… 描述了这个有趣的问题。也许文档在我阅读它们和最近之间更新了这些信息。 ¯_(ツ)_/¯
猜你喜欢
  • 2016-11-25
  • 1970-01-01
  • 2013-09-18
  • 2016-01-02
  • 2011-11-14
  • 2015-01-11
  • 2019-12-08
  • 2012-01-01
相关资源
最近更新 更多