Android appcompat库样式如何工作

Android appcompat库样式如何工作,android,styles,android-appcompat,Android,Styles,Android Appcompat,我很困惑appcompat库中的样式是如何工作的 根据: 现在,我们在所有应用程序上使用工具栏/操作栏的支持实现 平台意味着我们不再阅读任何android:attributes 与操作栏相关 对于已经有appcompat设置的应用程序,这意味着 您应该删除v14+主题,这些主题在中重新设置了相同的值 android名称空间。请注意,这仅适用于 影响操作栏的样式/小部件 对于大多数应用程序,您现在只需要一个主题声明,即值/ 所以我的问题是: 如果我想在API 14+中使用material desi

我很困惑appcompat库中的样式是如何工作的

根据:

现在,我们在所有应用程序上使用工具栏/操作栏的支持实现 平台意味着我们不再阅读任何android:attributes 与操作栏相关

对于已经有appcompat设置的应用程序,这意味着 您应该删除v14+主题,这些主题在中重新设置了相同的值 android名称空间。请注意,这仅适用于 影响操作栏的样式/小部件

对于大多数应用程序,您现在只需要一个主题声明,即值/

所以我的问题是:

如果我想在API 14+中使用material design ActionBar,我可以使用appcompat_v7中提供的ActionBar/工具栏,并在公共值/文件夹中设置样式,删除“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:
命名空间属性作为操作栏/窗口相关的标志,v14、v20等也没有单独的主题。AppCompat提供的所有API级别的顶级属性的完整列表可以在中找到


互联网上的大部分代码(包括developer.android.com网站的部分代码)仍然是为v21之前的AppCompat编写的,它确实需要
android:
和无前缀版本。

您正在使用吗?这不是官方图书馆。谷歌所说的任何东西都可能适用,也可能不适用。@karaokyo我不是,我只是用了一个例子,这可能只是意味着你看到的任何代码都没有使用支持库的v21。@karaokyo所以你的意思是,如果我使用v21支持库,那么我就不需要“android:”项了?这不是那篇文章所说的。它说appcompat库不会在操作栏样式中使用android名称空间属性。也就是说,在你的
values/
文件夹中应该是
app:windowContentOverlay
,谢谢!那很有帮助。但是,当我尝试在没有android:的情况下设置appcompat actionbar的例如
elevation
background
时,它没有任何效果,您能解释一下原因吗?您应该使用
colorPrimary
为操作栏着色和
getSupportActionBar()。setElevation()
关于设置高程的向后兼容方法-不幸的是,我不知道如何通过XML以向后兼容的方式设置高程。