android中的资源、属性引用方式

android系统中引用资源有几种方式,常用的有“@”“@+”引用具体资源的方式。也有“?”"?attr"等引用主题属性的方式,方式多了容易乱,为保持思路清晰,总结之。

站在用户的角度思考问题,与客户深入沟通,找到竹溪网站设计与竹溪网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名与空间、网络空间、企业邮箱。业务覆盖竹溪地区。

 

引用格式分解:

android:background="@color/light_red"    引用colors.xml中定义的颜色资源

android:background="?attr/colorPrimary"  引用主题属性colorPrimary

android命名空间
background属性名称
@表明引用的是具体资源
?表明引用的是系统属性
color资源类型
attr属性的类型
light_redcolors.xml中定义的颜色资源名称
colorPrimary属性名称

引用具体资源:

1、引用自定义资源

格式:@[package:]type/name

例如:android:text="@string/app_name"

=====================================================================

2、引用系统资源

格式:@android:type/name

例如:android:textColor="@android:color/light_blue"

@android:style/Theme.Holo.Light //引用系统主题

 

3、“@+”表示新建并引用资源id

例如:android:id="@+id/bt_title"

 

继承关系指定:(这里可以不需要使用“@”)

 

引用属性写法:

引用自定义属性:?attr/colorPrimary                 简写:?colorPrimary

引用系统属性:?android:attr/colorPrimary       简写:?android:colorPrimary

其中,自定义属性会复写系统属性

 

引用属性时,不需要指定类型(?name == ?attr/name)

当colors.xml中有定义colorPrimary属性时,

鼠标在该属性上时“?colorPrimary”和“?attr/colorPrimary”均显示:

?attr/colorPrimary => @color/colorPrimary =>#3F51B5

所以:“?colorPrimary”只是“?attr/colorPrimary”的简写

 

鼠标在该属性上时“?android:colorPrimary”和“?android:attr/colorPrimary”均显示:

?android:attr/colorPrimary => ?attr/colorPrimary=> @color/colorPrimary => #3F51B5

所以:“?android:colorPrimary”只是“?android:attr/colorPrimary”的简写

 

当colors.xml中没定义colorPrimary属性时,

?attr/colorPrimary => @color/primary_material_light=> @color/material_grey_100 => #fff5f5f5

这是AppCompat包中定义的属性值

 

引用资源时,一定要指定类型(@name != @color/name)

@name会引用失败

因为不同类型的资源可以有相同的名称,如:R.color.white、R.style.white。

而主题属性不可以,并且在attrs.xml中就约束了其类型,所以属性引用可以省略,而资源引用不可以

 

 


本文题目:android中的资源、属性引用方式
文章地址:http://scyanting.com/article/gdoigd.html