我对 appcompat 库中的样式如何工作感到非常困惑。
根据here https://chris.banes.me/2014/10/17/appcompat-v21/:
我们现在使用 Toolbar/ActionBar 的支持实现
平台意味着我们不再读取任何 android: 属性
与操作栏相关。
对于已经具有现有 appcompat 设置的应用程序,这意味着
您应该删除 v14+ 主题,这些主题在
安卓命名空间。请注意,这仅适用于
影响操作栏的样式/小部件。
对于大多数应用程序,您现在只需要一个主题声明,在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
) 你也是not需要android:
操作栏/窗口相关标志的命名空间属性,也不是 v14、v20 等的单独主题。AppCompat 跨所有 API 级别提供的顶级属性的完整列表可以在AppCompat R.styleable 主题 https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Theme.
互联网上的大部分代码(包括部分的developer.android.com网站)仍然是为v21之前的AppCompat编写的,did需要同时android:
和无前缀版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)