Theme.NoTitleBar 定义如下。
<style name="Theme.NoTitleBar"> // It does not have parent="Theme"
<item name="android:windowNoTitle">true</item>
</style>
但是,它继承了 Theme 的所有属性。我不知道它是如何工作的。
它继承了的所有属性,Theme
因为它基本上是该主题的扩展。这有点类似于说Class A extends B
,尽管在属性或任何东西的可见性方面没有区别。
请注意如何Theme.NoTitleBar
以 为前缀Theme
,这是所有属性的来源。
通常,name
样式的 提供了一种分层方法来构建和命名样式和子样式。您可以使用分层特征来替代parent
您自己定义的样式的属性。要扩展现有的平台定义样式,您始终需要使用parent
.
所有这些在Styles and Themes 文档的 Inheritance 小节中都有很好的解释。总结上述大部分内容的两个相关引述:
如果您想继承您自己定义的样式, 则不必使用 parent 属性。相反,只需将要继承的样式名称添加到新样式名称的前面,并用句点分隔。
注意:这种通过将名称链接在一起的继承技术仅适用于由您自己的资源定义的样式。您不能以这种方式继承 Android 内置样式。要引用内置样式,例如
TextAppearance
,您必须使用该parent
属性。
前往链接了解更多详情或查看一些示例。