?android:attr / colorPrimary vs?attr / colorPrimary

时间:2018-05-30 12:39:35

标签: android android-resources

有人可以告诉我

之间有什么区别
?android:attr/colorPrimary

?attr/colorPrimary

无论我使用哪种,结果都是一样的。 Altough first选项会在某些设备上导致android.view.InflateException

2 个答案:

答案 0 :(得分:1)

两者几乎都经常相同。当你使用?attr/colorPrimary时,它的工作完全正常,因为编译器已经知道' android'必须附加。

关于你说?android:attr/colorPrimary给你例外,那么在这种情况下,请尝试仅使用第二个选项..

对于styles.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>

答案 1 :(得分:0)

建造者知道颜色来自attr,所以它是多余的。该文档指出:

...您不需要明确声明类型...可以排除attr类型。

请参阅:App resources overview: Referencing style attributes

对于android:android:colorPrimary中的前缀指的是实质主题的属性(API 21及更高版本)。如果没有前缀,?colorPrimary将来自支持库。