【问题标题】:Android app theme - difference when using theme from style xml fileAndroid 应用程序主题 - 使用样式 xml 文件中的主题时的区别
【发布时间】:2012-12-07 13:55:50
【问题描述】:

为什么AndroidManifest.xml 中定义的主题和styles.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) - 注意 Menu 和 ActionBar

编辑 2:

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

【问题讨论】:

  • 其实没有什么区别,因为你只是在AppTheme中重命名主题或者把主题放到Manifest文件中。但是,清单中的 AppTheme 是默认的。
  • 你不应该得到不同的视觉效果。您确定没有任何其他 res/values 文件夹,例如 res/values-v11、res/values-v14、res/values-anything 等,其中包含为 @style/AppTheme 定义另一个父级的 theme.xml ?

标签: android android-manifest android-theme


【解决方案1】:

您可能还有另一个styles.xml 文件,可能位于“values-v11”之类的目录下,它定义了与@android:style/Theme.Black 不同的@style/AppTheme,并优先于您正在查看/修改的文件。

【讨论】:

  • 谢谢,这正是我的问题!我有一个“values/styles.xml”和一个“values-v21/styles.xml”。我从文件“values-v21/styles.xml”中删除了代码&lt;style name="AppTheme" parent="android:Theme.Material.Light"&gt;&lt;/style&gt;,一切都像一个魅力:)
【解决方案2】:

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

简单来说,它就像使用 Activity 类或 YourOwnActivity 类,它扩展了 Activity 并在其中添加了额外的功能。

【讨论】:

  • 是的,但我不明白为什么上面的例子有区别,因为我没有做额外的修改,只是“扩展”了默认的Theme.Black?我认为无需任何修改我的AppTheme 应该与@android:style/Theme.Black 相同。也许应该是这样,但我就是不明白为什么:)
  • 你在说什么区别?是视觉的吗?你能把这两种风格的屏幕截图都包括进来吗?
  • 您使用的是同一个设备吗?还是两个不同的设备?
  • 一个屏幕截图似乎使用了没有操作栏的普通样式,而另一个屏幕截图似乎使用了带有操作栏的 Holo。您确定这些是您的活动中定义和使用的唯一样式吗?
  • 是的,我刚刚意识到实际上似乎父母不起作用。我可以在那里写任何其他主题,它不会改变。
【解决方案3】:

Styles.xml 使您能够创建自己的主题。在 AndroidManifest 中,您可以为应用或活动设置所需的主题。您可能想要使用系统主题或您自己的主题。您还可以在设置“父”属性时扩展其他主题。欲了解更多信息,请查看:

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

【讨论】:

    【解决方案4】:

    你应该试着把:

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

    在一个名为res/themes.xml的xml文件中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-02
      • 2010-12-18
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多