10.2.2 组件标识符
通过对R.java文件的介绍,我们已经了解了R文件的索引作用,它可以检索到我们应用中需要使用的资源。下面介绍如何通过R.java文件来引用到所需要的资源。
(1)在Java程序当中,我们可以按照Java的语法来引用。
① R.resource_type.resource_name。
需要注意的是,resource_name不需要文件的后缀名。
上面的icon.png文件的资源标识符可以通过如下方式获取:R.drawable.icon
② android.R.resource_type.resource_name。
Android系统本身自带了很多的资源,我们也可以进行引用,只是需要在前面加上"android."以声明该资源来自Android系统。
(2)在XML文件中引用资源的语法如下。
① @[package:]type/name。
使用我们自己包下的资源可以省略package。
在XML文件中,main.xml以及AndroidMainfest.xml文件中通过"@drawable/icon"的方式获取。其中"@"代表的是R.java类,"drawable"代表R.java中的静态内部类"drawable","/icon"代表静态内部类"drawable"中的静态属性"icon"。而该属性可以指向"res"目录下的"drawable-*dpi"中的icon.png图标,其他类型的文件也比较类似。凡是在R文件中定义的资源都可以通过"@ Static_inner_classes_name/resourse_name"的方式获取。如"@id/button","@string/app_ name"。
② 如果访问的是Android系统中带的文件,则要添上包名"android:"。
如android:textColor="@android:color/red" 。
(3)"@+id/string_name"表达式。
在布局文件当中我们需要为一些组件添加id属性作为标示,可以使用表达式"@+id/string_ name",其中"+"表示在R.java中的名为id的内部类中添加一条记录。如"@+id/button"的含义是在R.java文件中的id这个静态内部类添加一条常量名为Button,该常量就是该资源的标识符。如果id这个静态内部类不存在,则会先生成它。通过该方式生成的资源标识符,仍然可以以"@id/string_name"的方式引用。示例代码片段如下。
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancle_button"
android:layout_alignParentRight="true"
android:id="@+id/cancle"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/cancle"
android:layout_alignTop="@id/cancle"
android:text="@string/ok_button"/>
其中,android:id="@+id/cancle"将其所在的Button标识为cancle,在第二个Button中通过"@id/cancle"对***个Button进行引用。【责任编辑:云霞 TEL:(010)68476606】
点赞 0