?android:attr/colorPrimary vs ?attr/colorPrimary



有人可以告诉我两者之间的区别是什么

?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将从支持库中获取。

相关内容

  • 没有找到相关文章