【发布时间】:2016-11-03 04:57:00
【问题描述】:
我想为我的应用使用 Material 主题,并将目标从 Jelly Bean 改为“M”。
正确的建议是什么? 1. 21级以下使用appcompat主题,21级及以上使用标准素材 2) 只需在所有 api 级别上使用 appcompat。
如果我只是在所有 api 级别上使用 appcompat,我会遗漏什么吗?
【问题讨论】:
我想为我的应用使用 Material 主题,并将目标从 Jelly Bean 改为“M”。
正确的建议是什么? 1. 21级以下使用appcompat主题,21级及以上使用标准素材 2) 只需在所有 api 级别上使用 appcompat。
如果我只是在所有 api 级别上使用 appcompat,我会遗漏什么吗?
【问题讨论】:
您将只使用 AppCompat 主题。对于大多数样式,它们都有自己的实现来模仿更现代的方法。对于无法模仿的事情,他们只是根本不这样做或移动到默认值(想到的是波纹效应。21+ 设备将使用 Ripple,但在其他设备上它将默认为标准按钮选择器)。如果他们可以使用本机方法,那么他们将使用这些方法。
但在某些情况下,您可能需要创建包含特定 API 级别独有属性的样式。在这种情况下,您需要创建一个layout-v## 文件夹,其中## 是要支持的API 级别。然后在较低的layout 文件夹中放入一个同名的样式。 Android 会选择合适的文件夹。可以对任何其他资源文件夹执行相同的操作。
【讨论】:
对所有内容都使用 AppCompat,如果您使用 = 21,则有内置功能可以处理。
真正应该使用标准 Material 主题的唯一情况是,如果您支持的基础 API 是 21+,但即便如此,您最终还是会使用 app compat 来添加新事物
【讨论】: