Android中的样式层次结构-重要性的顺序是什么?

Android中的样式层次结构-重要性的顺序是什么?,android,xml,user-interface,mobile,Android,Xml,User Interface,Mobile,我有一个android应用程序,我正在使用一个自定义主题,应用在主活动本身的android清单中。此活动将创建一个应用了样式的listview 如果我为该listview创建一个自定义布局,包括为行本身创建一个单独的xml文件,并将样式直接应用于这些布局,那么该样式是否会覆盖应用程序的整体样式?我试图掌握事件的层次结构,以及样式和主题是如何工作的 在我的示例中,我猜想它的工作方式是:为行应用样式,由行布局xml引用>为整体listview应用样式,由listview布局xml引用>从自定义主题应

我有一个android应用程序,我正在使用一个自定义主题,应用在主活动本身的android清单中。此活动将创建一个应用了样式的listview

如果我为该listview创建一个自定义布局,包括为行本身创建一个单独的xml文件,并将样式直接应用于这些布局,那么该样式是否会覆盖应用程序的整体样式?我试图掌握事件的层次结构,以及样式和主题是如何工作的

在我的示例中,我猜想它的工作方式是:为行应用样式,由行布局xml引用>为整体listview应用样式,由listview布局xml引用>从自定义主题应用样式,由android清单引用的样式xml引用


我说得对吗?还是我处理得不对。(只是为了混淆起见,我的意思是“>”比“>”更重要)

希望我能理解你的问题

您在styles.xml中定义的样式将始终覆盖来自android当前使用的主题的样式

但这仅适用于覆盖的属性

如果你保持一个属性不变,android将为它提供样式,有时这会咬你的屁股:)

这个系统最好这样描述: textview需要一个属性示例

<item name="android:textColor">#00FF00</item>
#00FF00
Android将首先查看原始布局。 如果没有找到,它将查看您的自定义样式。 如果没有找到,它将研究android风格


希望这能有所帮助。

标准主题中有这样的行定义ListView样式:

    <item name="listViewStyle">@android:style/Widget.ListView</item>
@android:style/Widget.ListView
在你自己的主题中,你可以做一个

    <item name="listViewStyle">@style/MyOwnListView</item>
@style/MyOwnListView

ListView样式中未定义的内容(自有或默认)将是主题中定义的内容(如果您在主题中定义了该内容)。

如果您在多个位置指定了相同的属性,下面的列表将确定最终应用哪些属性。列表按从最高优先级到最低优先级的顺序排列:

  • 通过文本跨距将字符级或段落级样式应用于TextView派生类
  • 以编程方式应用属性
  • 将单个属性直接应用于视图
  • 将样式应用于视图
  • 默认样式
  • 将主题应用于视图集合、活动或整个应用程序
  • 应用特定于视图的特定样式,例如在TextView上设置TextAppearance

  • 我想问同样的问题。在我最初的实验中,情况似乎相反,这非常奇怪。如果有人能确认,那就太好了。这可能会有帮助: