在安卓系统中,Theme.AppCompat和Theme.Material有什么区别?

28

在我的情况下,这里有什么区别:

<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

你尝试过检查Android源代码吗? - OneCricketeer
1
无论如何,其中一个是“AppCompat”,这意味着它可以在比Material出现之前更旧的设备上运行... - OneCricketeer
请查看此链接:http://stackoverflow.com/documentation/android/124/material-design#t=201704171702360456137 - anatoli
@cricket_007 我已经在源代码中尝试过了,但我是Android开发的新手,所以有些困惑。 - Phat Dang
2个回答

16
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">    
<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">

Theme.AppCompat适用于API 7+以上版本

Theme.Material适用于API 21+以上版本


6
如何处理两者? - Atif AbbAsi

16
这是原材料设计主题,适用于Android 5及以上版本不确定如何在新的Android库中使用应用程序设计
<style name="AppTheme" parent="android:Theme.*">

这是一种在早期Android版本上使用Material Design并保持兼容性的方法。
<style name="AppTheme" parent="Theme.AppCompat.*">

您可以使用AppCompat设计新的API,仍然可以在早于Material Design基本级别的API级别上运行。

在这种情况下,这实际上意味着您可以在早于Material Design的平台上运行Material Design。现在这不再那么重要了,因为在撰写本文时,这些早期版本最多占据市场份额的约2.5%。

但请注意,使用AppCompat确实为您提供了额外的兼容性帮助程序,不仅仅是能够在旧设备上使用Material主题。还请注意,AppCompat已被弃用,取而代之的是目前流行的任何系统,谷歌尚未砍掉(Jetpack?),这可能会有所不同。


2
我只是想注意到两个主题呈现文本的方式之间存在细微差别。这可能是由于字体的不同,但如果您要从一个主题切换到另一个主题,请谨慎。 - TheIT
我认为Jetpack更多是一个方便的框架,用于新的Android组件,这些组件正在成为最佳实践的标准,例如ViewModels和Databinding,现代UI组件等等? - Chucky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接