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

本文总结了Android系统中引用资源的方式,包括用“@”“@+”引用具体资源,“?”“?attr”引用主题属性。详细介绍了引用具体资源(自定义、系统资源)和主题属性(自定义、系统属性)的格式及特点,还说明了引用时类型指定的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"

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

同上

同上

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

引用主题属性:

5、“?”表示引用主题属性

引用当前主题中定义的属性。“@”表示引用具体的资源,而“?”表示当前theme中定义的属性,该属性指定了具体的资源值,实现了根据使用的不同theme使用不同的资源的功能。

例如:background="?colorPrimary"。在使用theme_white和theme_black时background的值分别是white和black

@android:color/white

@android:color/black

引用属性写法:

引用自定义属性:?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中就约束了其类型,所以属性引用可以省略,而资源引用不可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值