主题inheritance在Android中究竟如何工作?

我在res/values/styles.xml有以下主题:

 <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="@android:style/Theme.NoTitleBar"> </style> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowNoTitle">true</item> </style> </resources> 

如果我删除<item name="android:windowNoTitle">true</item>行,我的活动有标题栏。 但是,如果我保留那条线,那么他们没有一个标题栏(这是我想要的)。

我很好奇为什么parent="@android:style/Theme.NoTitleBar"似乎没有效果? parent不做我认为的事吗? 我认为它是这样工作的:

 @android:style/Theme.NoTitleBar --> AppBaseTheme --> AppTheme ^ ^ ^ | | | | | Has everything AppBaseTheme | | does, unless it's overridden | | | Has everything @android:style/Theme.NoTitleBar | does, unless it's overridden (which I'm not | doing) | Sets whatever it needs to to not have a title, which I assume is done by setting <item name="android:windowNoTitle">true</item> 

不过,我也发现,如果我在AppBaseTheme设置<item name="android:windowNoTitle">true</item> ,它也没有效果; 我必须在AppTheme设置它。 那么指定父代的意义何在?

Solutions Collecting From Web of "主题inheritance在Android中究竟如何工作?"

我想我只是想出来了。 事实certificate,当我创build项目时,Android创build了一个res/values-14/styles.xml文件,里面是<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">

事实certificate, res/values-14/styles.xml文件覆盖了默认的res/values/styles.xml因为我testing的设备具有API级别14,因此它优选values-14的文件比默认values

inheritance似乎像我认为的那样工作; 我只是没有意识到,当我第一次做我的项目时,文件被覆盖。