Android中引用资源问题
今天在Mms中遇到这样一个资源的引用 ?android:textColor="?android:attr/textColorSecondary"
?
一看是知道是引用android系统自带的资源,什么意思呢? google一下,原来是引用的主题资源。
?
原来引用的是framework中?/GingerBread/frameworks/base/core/res/res/values/attrs.xml 里面的资源:
<attr name="textColorSecondary" format="reference|color" />
这个format是什么意思呢?原来是一种自定义的属性。(http://www.gisall.com/html/35/160435-5369.html)
?
具体的查询如下:
1、 引用主题属性?
?
另外一种资源值允许你引用当前主题中的属性的值。这个属性值只能在样式资源和XML属性中使用;它允许你通过将它们改变为当前主题提供的标准变化来改变UI元素的外观,而不是提供具体的值。?
? ?android:textColor="?android:textDisabledColor"?
?
? ?注意,这和资源引用非常类似,除了我们使用一个"?"前缀代替了"@"。当你使用这个标记时,你就提供了属性资源的名称,它将会在主题中被查找--因为资源工具知道需要的属性资源,所以你不需要显示声明这个类型(如果声明,其形式就是?android:attr/android:textDisabledColor)。除了使用这个资源的标识符来查询主题中的值代替原始的资源,其命名语法和"@"形式一致:?[namespace:]type/name,这里类型可选。
?
?
1. reference:参考某一资源ID。
? ? (1)属性定义:
? ? ? ? ? ? <declare-styleable name = "名称">
? ? ? ? ? ? ? ? ? ?<attr name = "background" format = "reference" />
? ? ? ? ? ? </declare-styleable>
? ? (2)属性使用:
? ? ? ? ? ? ?<ImageView
? ? ? ? ? ? ? ? ? ? ?android:layout_width = "42dip"
? ? ? ? ? ? ? ? ? ? ?android:layout_height = "42dip"
? ? ? ? ? ? ? ? ? ? ?android:background = "@drawable/图片ID"
? ? ? ? ? ? ? ? ? ? ?/>
?