Android资源文件中@,?,@+含义和区别.

来源:互联网 发布:在linux中安装oracle 编辑:程序博客网 时间:2024/06/06 08:30

一,@代表引用资源.

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

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


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


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

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

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

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

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


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


三.?代表引用主题属性.

当你使用这个标记,你所提供的资源名必须能够在主属性中找到,因为资源工具认为这个资源属性是被期望得到的,不需要明确的指出它的类型(也就是不需要写全在哪个文件中).


主题属性可以在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名

0 0