我在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>
但是,我还发现,如果我在<item name="android:windowNoTitle">true</item>
中设置AppBaseTheme
,它也没有效果;我必须在AppTheme
中设置它。那么指定父母的重点是什么呢?
答案 0 :(得分:9)
我想我只是想通了。事实证明,当我创建项目时,Android创建了一个res/values-14/styles.xml
文件,其内部是<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
。
事实证明,res/values-14/styles.xml
文件覆盖了我的默认res/values/styles.xml
,因为我正在测试的设备的API级别为14,因此它首选values-14
中的文件而不是默认值values
。
继承确实像我想象的那样起作用;我刚才没有意识到在我第一次创建项目时创建的文件被覆盖了。