有人可以告诉我两者之间的区别是什么
吗?android:attr/colorPrimary
和
?attr/colorPrimary
无论我使用哪种方法,结果都是一样的。尽管第一个选项会导致某些设备上出现android.view.InflateException
。
两者几乎经常工作相同。 当你使用?attr/colorPrimary
时,它的工作完全正常,因为编译器已经知道必须附加"android"。
关于你说?android:attr/colorPrimary
给你例外,那么在这种情况下,请尝试仅使用第二个选项..
例如,在您的样式中.xml以下内容可能/可能不会每次都有效
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:colorPrimary">@color/primary_material_dark</item>
<item name="android:colorPrimaryDark">@color/primary_dark_material_dark</item>
</style>
</resources>
但这主要有效:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary_material_dark</item>
<item name="colorPrimaryDark">@color/primary_dark_material_dark</item>
</style>
构建器知道颜色来自attr
所以它是多余的。文档指出:
。您无需明确说明类型...您可以排除 ATTR 类型。
请参阅:应用程序资源概述:引用样式属性
至于android:
-android:colorPrimary
中的前缀是指材料主题的属性(API 21 及更高版本(。如果没有前缀,?colorPrimary
将从支持库中获取。