我对appcompat库中的样式如何工作感到很困惑.
根据here:
We now use the support implementation of Toolbar/ActionBar on all
platforms meaning that we no longer read any android: attributes
related to the action bar.For apps which already have existing appcompat setups, this means that
you should remove your v14+ themes which re-set the same values in the
android namespace. Please note, this is ONLY applicable for
styles/widgets which affect the action bar.For most apps, you now only need one theme declaration, in values/
所以这是我的问题:
如果我想在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,文件夹之间有什么区别?
有人可以解释或指导我找到正确的来源吗?
解决方法:
是的,如果您使用AppCompat v21,您只需要一个主题为Theme.AppCompat(或主题,如Theme.AppCompat.Light)的单个主题,并且您不需要动作栏/窗口相关标志的android:namespace属性,v14,v20等也没有单独的主题.可以在AppCompat R.styleable Theme中找到AppCompat在所有API级别提供的*属性的完整列表.
互联网上的大部分代码(包括developer.android.com网站的部分内容)仍然是为v21之前的AppCompat编写的,它确实需要android:和非前缀版本.