Android android:background="?attr/main_list_item_background"

_xwc520 发布于 2016/05/13 13:34
阅读 390
收藏 0
?attr/main_list_item_background"  这个写法是什么意思,为什么我在colors里面找不到他对应的颜色
加载中
0
monroe
monroe

@:表示当前属性的值引用已经定义好的某一个资源(比如,一个 drawable,一个 color ,一个 dimen ,一个 style 等等)。

?:表示当前属性的值引用当前主题下另一个属性(以 android: 开头,说明这个属性是有 Android 系统定义的)的值。

举例:

<attr name="attr1" format="color"/>
<attr name="attr2" format="color"/>
<attr name="attr3" format="color"/>

<color name="red">#ff00</color>
<color name="green">#f0f0</color>
<color name="blue">#f00f</color>

<style name="APP_Theme">
    <item name="attr1">@color/red</item>
    <item name="attr2">@color/green</item>
    <item name="attr3">?attr/attr1</item>
</style>

<MyView
    app:attr2="?attr/attr1"/>



在 APP_Theme 中,attr3 使用了当前主题中 attr1 的值,所以 attr3 的颜色是红色。

在 MyView 中,attr2 使用了当前主题中的 attr1 的值,所以 MyView 的 attr2 的颜色是红色。


_xwc520
_xwc520
很感谢你的回答
0
liujiacheng
liujiacheng
这个是在对应的路径为values下面的attr.xml文件里的,这个attr文件没有的话,自己可以去建个。具体用法可以搜下。
0
qichuan
qichuan
main_list_item_background是一个变量,它的值是在Application或Activity的theme里定的。查一下Manifest文件里application标签的android:theme。
返回顶部
顶部