2012-12-07 33 views
4

为什么AndroidManifest.xml中定义的主题和styles.xml中的主题有区别?Android应用主题 - 使用时尚xml文件中的主题时的差异

1)的AndroidManifest.xml:

<application ... android:theme="@android:style/Theme.Black"> 

2)的AndroidManifest.xml

<application ... android:theme="@style/AppTheme"> 

styles.xml

<resources> 
    <style name="AppTheme" parent="@android:style/Theme.Black" /> 
</resources> 

第一设置使黑色主题和无操作栏。第二有黑暗的行动酒吧和轻的菜单。

编辑:选项1)和2) - 通知菜单和动作条

enter image description hereenter image description here

编辑2:

为什么没有第二个选项实际使用AppTheme (Theme.Black)?(在SGS3上测试)

+1

你不应该得到不同的视觉效果。你确定你没有像res/values-v11,res/values-v14,res/values-anything等其他res/values文件夹,它包含一个theme.xml,它定义了@ style/AppTheme的另一个父项? – lukas

+0

实际上没有区别,因为您只是将AppTheme中的主题重命名或将主题放在Manifest文件中。但是,清单中的AppTheme是默认设置。 – gunZ333

回答

0

Styles.xml使您可以创建自己的主题。在AndroidManifest中,您可以为应用程序或活动设置所需的主题。您可能想要使用系统主题或您自己的主题。您可以在设置“父”属性时扩展其他主题。有关详细信息,检查了这一点:

http://developer.android.com/guide/topics/ui/themes.html

2

@android:style/Theme.Black实现由Android(或设备制造商)执行的确切的主题。但是,@style/AppTheme允许您在自己的主题中执行自定义修改,这实际上从android扩展了原始Theme.Black,并且为了执行自定义修改,您可以使用样式资源。

在简单的话,其就像使用活动类或延伸活动与内额外的功能YourOwnActivity类。

+0

是的,但我不明白为什么上面的例子有区别,因为我没有做任何额外的修改,只是“扩展”默认的'Theme.Black'?我认为没有任何修改,我的AppTheme应该和'@android:style/Theme.Black'一样。也许它应该是这样,但我只是不明白为什么:) – yosh

+0

你说什么区别?它是视觉的吗?你能否包括这两种风格的屏幕截图? – waqaslam

+0

我会在一秒钟内。 – yosh

0

你应该尝试把:

<resources> 
    <style name="AppTheme" parent="@android:style/Theme.Black" /> 
</resources> 

名为res/themes.xml

8

一个XML文件,你可能有另一个styles.xml文件,也许像“值-V11”的目录下,即定义@style/AppTheme@android:style/Theme.Black不同,并且优先于您正在查看/修改的文件。

+0

谢谢,那正是我的问题!我有一个“values/styles.xml”和“values-v21/styles.xml”。我从文件“values-v21/styles.xml”中删除了代码'',一切都像魅力:) –