安卓xml中资源文件的引用符(@,?,*)

来源:互联网 发布:hr人力资源软件排名 编辑:程序博客网 时间:2024/04/29 17:27

在xml文件中引用的资源,通常分为系统自带的资源和自己包下的资源。在使用@来引用的时候,要遵循特定的语法规则。

(1) @[package:]type/name

使用我们自己包下的资源可以省略package。在xml 文件中, 如AndroidMainfest.xml 文件中通过“@drawable/icon”的方式获取(省略了package)。其中“@”代表的是R.java 类,“drawable”代表R.java 中的静态内部类“drawable”,“/icon”代表静态内部类“drawable”中的静态属性“icon”。等同于在代码中通过R.drawable.icon来获取资源一样。凡是在R 文件中定义的资源都可以通过“@ Static_inner_classes_name/resourse_name”的方式获取。如“@id/button”,“@string/app_name”。

除了自己包下的资源,安卓系统也会提供大量的系统自带资源,如样式(style),主题(theme),颜色(color),动画(anim),数组(array)等等。获取系统资源需要添加系统包名,如"@android:color/red" 。更多的系统资源可以在\sdk\platforms\android-21\data\res\values文件中查看

(2)?[namespace:]type/name

?允许你引用当前主题中的属性。这个属性值只能在style资源和XML属性中使用;如在使用progressbar时,通常需要指定progressbar的style的属性,style="?android:attr/progressBarStyleHorizontal"表示水平的进度条。其实,当使用?这个标记时,你就提供了资源属性的类型(type),你所提供的资源名必须能够在主题属性中找到,因为资源工具认为这个资源属性是被期望得到的,您不需要显性声明它的类型(即type可以省略,"?android/progressBarStyleHorizontal")。

(3)@+type/name

 含义:”+”表示在R.java中名为type的内部类中添加一条记录。如"@+id/button"的含义是在R.java 文件中的id 这个静态内部类添加一条常量名为button。该常量就是该资源的标识符。如果标示符(包括系统资源)已经存在则表示引用该标示符。最常用的就是在定义资源ID中,例如:

@+id/资源ID名         新建一个资源ID   android:id="@+id/selectdlg"

 @android:id/资源ID名        应用现有已定义的资源ID,包括系统ID    android:id="@android:id/text1"

 @ id/资源ID名    引用系统ID,其等效于@android:id/资源ID名   android:id="@id/button3"  




0 0
原创粉丝点击