android 在activity里用java代码写xml布局文件,Android控件系列之XML静态资源使用介绍...

学习目的:

1、了解在android中如何设置和调用xml资源

2、掌握如何利用xml和java代码进行协同开发界面

3、理解r文件的作用

开发android时,总能看到一个系统自动生成的r.java文件:

1455525391-0.png

您必须了解一下几个要点:

1、r.java是自动生成的,并且强烈建议您不要去手动修改其中的代码。

2、r类中的若干个内部类的名字和android项目中的res文件下的子文件名字一致(除了drawable自动分为了高中低3个等级):

1455522951-1.png

1455525492-2.jpg

您的项目中可能不是如上图中的文件或代码,但它们一定符合上述的规则

3、这些内部类中的静态字段,代表一个资源的id,这些id一定唯一,并且与res中指定的资源一一对应,如上图中的0x7f020000一定对应着icon.png图片资源。

4、资源可以是各种类型:如图片、xml等,其中xml中的每个节点也可以具有id,为它们设置id后,r文件也会为它们自动生成一一对应的id

5、id被自动写入r.java后,就能通过代码访问这些id。但是,单纯的获取这些id是没有任何意义的,如0x7f020000不代表任何东西,好在android提供了通过代码获取指定id所对应的资源的方法:通过view类的getresources()方法,可以获取一个resources类的实例,然后通过getxxxx(int id)方法,可以根据整形的id,获取指定类型的资源。另外许多控件提供了赋值的2种版本,可以动态的设置值,也赋值为资源文件中的值,如下图显示了textview控件settext的2个重载版本:

1455526105-3.jpg

在activity中布局的2种方式:

纯代码布局:

复制代码 代码如下:

//初始化一个textview

textview view = new textview(this);

//设置显示的文本内容

view.settext("这是一个文本显示控件");

//进行布局

view.setlayoutparams(new layoutparams(linearlayout.layoutparams.wrap_content,linearlayout.layoutparams.wrap_content));

//用activity承载这个view

this.setcontentview(view);

纯代码的布局,虽然灵活,但具有java代码量大,难以维护等缺点。

xml+java的布局:

在res\layout文件下的xml,一般是用来给android提供布局方案的特殊xml。

要想用它来布局,需要显示的引入xml命名空间:xmlns:android=http://schemas.android.com/apk/res/android

并且所有的布局文件的属性都以“android:”作为限定,最常用的是layount_width、layount_height、text等属性

如果需要控件显示的文本来自于资源文件,则可以使用@限定符+资源文件夹 + / + 资源id,如需要绑定string资源中的hello值,可以使用:

android:text=" @string/hello"。

下面仅演示一个普通的xml布局,并且如何在activity中用代码调用这个布局,并承载它。

在layout下的main.xml:

复制代码 代码如下:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="hello wt!"

/>

那么r.layout中会存在一个与之对应的id,名字与布局文件的xml文件名一致,并且不带后缀名:

//通过main.xml文件对应的静态id来为activity布局this.setcontentview(r.layout.main);

对比“纯代码布局”和“xml+java”布局,我们可以发现,大部分时候后者更有优势:

1、界面和业务逻辑完全分离

2、程序编译后,依然可以修改布局文件

3、利用一些第三方工具布局,甚至可以几乎不用写xml代码

xml布局文件中的控件如何生成r中的id,并在代码中得到该控件:

前面提到,导入任何资源文件或者新建xml布局文件后,r.java会生成与之一一对应的id,也介绍了布局文件中为控件赋资源值可以使用@限定符。

因此在程序代码中,可以根据布局文件的id得到该布局文件,那么如何得到具体控件的实例呢?

不同于布局文件会自动生成id,控件需要您手动的配置它,规则如下:

android:id = "@+id/控件名称",这样,保存该布局文件后,r中会产生一个名为id的类,里面也自动的产生了与控件名称相一致的id。

因为所有的控件都派生自view,所以在activity中,可以通过this.findviewbyid(r.id.控件名称)方法获取指定id的控件实例,但注意可能需要强制转换成您需要的类型:

如采用匈牙利命名法在xml中建立了一个按钮,其id属性:android:id = "@+id/btnok",

则在activty中,可以使用button btn = (button)this.findviewbyid(r.id.btnok);获取到的btn即为xml中定义的按钮的一个实例。接下来,您就可以利用btn.settext等方法操作该按钮了。

总结:

本文全面介绍了在android中,如何充分利用xml布局文件来配合java构筑界面,从而达到界面与逻辑的代码分离。另外,还介绍了如何分别在xml和代码中如何获取静态资源的值或者控件的实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值