【问题标题】:Android applying theme by versionAndroid 按版本应用主题
【发布时间】:2016-09-07 12:17:53
【问题描述】:

我正在开发一个以列表视图开头的应用程序。 我在为应用程序设置主题时遇到了麻烦。 Material Design 可应用于 Android 5.0 及以上版本。所以我创建了一个 values-21 文件夹并创建 styles.xml 如下:

<resources>
  <!-- Inherit from the light Material Theme -->
  <style name="MyCustomTheme" parent="android:Theme.Material.Light">
    <item name="android:colorPrimary">@color/My_LightBlue</item>
  </style>
</resources>

在 5.0 版本以下的 Android 中,此主题不适用,因为它不读取 values-21 文件夹。 我还必须在值标准文件夹中创建 styles.xml 吗? 必须创建一个新主题来更改应用栏的颜色(这是我的目标)。

我有点迷茫... 谢谢

【问题讨论】:

标签: android android-studio material-design android-theme android-styles


【解决方案1】:

来自https://developer.android.com/training/material/compatibility.html

您可以将您的应用配置为在以下设备上使用材料主题: 支持它并在较早运行的设备上恢复为较旧的主题 Android 版本:

  1. 定义一个继承自旧主题(如 Holo)的主题 res/values/styles.xml。
  2. 定义一个继承自材质的同名主题 res/values-v21/styles.xml 中的主题。
  3. 将此主题设置为清单文件中应用的主题。

如果您根据材料设计指南设计的布局不使用 Android 5.0(API 级别 21) 中引入的任何新 XML 属性,它们将适用于早期版本的 Android。否则,您可以提供替代布局。您还可以提供替代布局来自定义您的应用在早期版本的 Android 上的外观。

res/layout-v21/ 中创建适用于 Android 5.0(API 级别 21)的布局文件,并在 res/layout/ 中创建适用于早期 Android 版本的替代布局文件。例如,res/layout/my_activity.xml 是 res/layout-v21/my_activity.xml 的替代布局。

检查this answerblog

【讨论】:

  • 如果仍然感到困惑,请告诉我。@roberto garavaglia
  • 感谢您的回答。那么,如果我不应用 Material Theme,那么在 Android 6.0 上执行时,我的应用会应用哪个主题?
  • 请检查 thisthis answer 。您将了解主题概念。
  • 好的,谢谢!还有一个问题,请:-) 对于主要活动,我设置了应用程序栏中显示的图标。它在 Android 4.4 模拟器上运行良好,但在 Android 6.0 上不显示。为什么?我离开了默认主题。谢谢!
  • 我认为这不应该发生。它应该在两者中都显示该图标。可能是设备问题。使用不同的设备再次检查。如果对您有帮助,请接受并投票。
猜你喜欢
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多