Android资源文件中@和?含义、区别

@代表引用资源.

  • 1、引用自定义资源:比如说定义text 格式为“@string/name”

  • 2、引用系统资源:比如说设置文本颜色,就是"@android:color/darker_gray"

其实也就是引用系统资源是引用自定义资源的一个子类.

@*代表引用系统的非public资源.

系统资源定义分为public和非public

public 的声明在SDK的文件夹里面,路径是platfroms/android/data/res/values/public.xml

@*android:type/name:可以调用系统定义的所有资源

@android:type/name:只能够调用public属性的资源

需要注意的是:没在public.xml中声明的资源是google不推荐使用的

?代表引用主题属性.

另外一种资源值允许你引用当前主题中的属性的值。这个属性值只能在style资源和XML属性中使用;它允许你通过将它们改变为当前主题提供的标准变化来改变UI元素的外观,而不是提供具体的值。
当你使用这个标记,你所提供的资源名必须能够在主属性中找到,因为资源工具认为这个资源属性是被期望得到的,不需要明确的指出它的类型(也就是不需要写全在哪个文件中).
例如:

  android:textColor="?android:textDisabledColor" 

主题属性可以在SDK的 values 找到attrs.xml文件

Android系统也为Theme 定义了很多属性

每个主题属性名称 都对应SDK/values目录下的themes.xml文件中,当用到主题属性的时候,可以直接在?后面加上属性名。

@+代表在创建资源

+表示在R.java中名type的内部类中加一条记录.

如@+id/button—就是在R.java文件中的id这个静态内部类添加一条常量button,该常量就是该资源的标识符.

@+id/资源ID名—新建一个资源ID

@id/资源ID名—应用现有已定的资源的ID,包括系统ID

@android:id/资源ID名—引用系统ID,同@id/资源ID名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值