【问题标题】:Material Design, AppCompat, and Backwards Compatibility材料设计、AppCompat 和向后兼容性
【发布时间】:2016-08-22 20:19:56
【问题描述】:

我正在尝试更好地理解使用 Material Design 的原则(我是这个领域的新手,一直在阅读文档和教程,但主题对我来说仍然有点模糊),我会很高兴得到一些帮助。到目前为止,我尝试的是拥有 2 个文件夹(值和 values-21),每个文件夹都有一个 styles.xml 文件-

值/样式.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

values-v21/styles.xml:

<style name="AppTheme" parent="android:Theme.Material.NoActionBar"></style>

问题从我尝试使用继承自 AppCompatActivity 的活动开始(据我了解,这就是我需要做的,以便在 Lollipop 之前支持设备上的向后兼容性,例如 Material Design?我说的对吗?更多信息这里会很棒)。如果我这样做,应用程序将无法在具有 API 21 或更高版本的设备上运行,因为“AppTheme”必须从 AppCompat 继承。

我可以做的是创建一个从 AppCompat 继承的基本主题,然后使两个文件中的样式都从该基本主题继承......但是我不再从 Material 继承。 ...这让我想到了问题-

Material Design 只是一个给定的主题吗?如果是这样,我该如何解决我的问题?在这里使用 AppCompatActivity 究竟能完成什么?还是 Material Design 本质上只是我应该遵循的一组规则和原则?如果是这样,为什么我们需要 Theme.Material.* 呢?任何人都可以就该主题向我提供任何额外信息,我会很高兴。

谢谢!

【问题讨论】:

    标签: android material-design backwards-compatibility appcompatactivity


    【解决方案1】:

    AppCompat 的全部意义在于您只需要一个主题(在values-v21 中您不需要单独的主题),它在所有设备上的体验都是一样的。

    Theme.AppCompat 已经在 API 21+ 上扩展了 android:Theme.Material - 它只是为您处理所有版本检查。

    【讨论】:

    • 好的,所以,基本上你要说的是,为了在所有设备上使用 Material Design,我需要做的就是定义一个扩展 Theme.AppCompat 的主题,然后制作所有活动都扩展 AppCompatActivity?根据活动中的 UI 元素,我应该遵循哪些准则?
    • 这足以让您入门。有一个完整的 material design website 讲述了材料设计 UI 的大部分内容,其中许多都在库中,例如 Design Support Library
    • 还有一个问题:这是否意味着对于 API 21 之前的版本,AppCompat 会根据版本扩展其他内容?
    • 显然。然而,几乎所有构成材料主题的东西仍然有效。这就是重点
    猜你喜欢
    • 2014-11-28
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2017-03-01
    • 2015-01-12
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    相关资源
    最近更新 更多