我对appcompat库中的样式如何工作感到很困惑。
根据here:
我们现在使用Toolbar / ActionBar的支持实现 平台意味着我们不再读取任何android:属性 与行动栏有关。
对于已有appcompat设置的应用,这意味着 你应该删除你的v14 +主题,重新设置相同的值 android命名空间。请注意,这仅适用于 影响操作栏的样式/小部件。
对于大多数应用,您现在只需要一个主题声明,在值/
中
所以这是我的问题:
如果我想在API 14+中使用材料设计ActionBar,我可以使用appcompat_v7中提供的ActionBar / Toolbar并将其设置在公共值/文件夹中并删除“android:”命名空间?但为什么我看到人们在下面编写代码:
<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
....
<item name="windowContentOverlay">@null</item>
<item name="android:windowContentOverlay">@null</item>
....
</style>
为什么“android:”命名空间在那里?上面的代码和使用value-v21,value-v14,文件夹之间有什么区别?
有人可以解释或指导我找到正确的来源吗?
答案 0 :(得分:5)
是的,如果你使用AppCompat v21 +,你只需要一个主题为Theme.AppCompat
的主题(或Theme.AppCompat.Light
等子主题),你需要不操作栏/窗口相关标志的android:
命名空间属性,v14,v20等的单独主题。可以在AppCompat R.styleable Theme中找到AppCompat在所有API级别提供的顶级属性的完整列表。
互联网上的大部分代码(包括developer.android.com网站的部分内容)仍然是针对v21之前的AppCompat编写的,其中 需要android:
和非前缀版本。