WEB开发网
开发学院手机开发Android 开发 Android获取Res下Layout对象 阅读

Android获取Res下Layout对象

 2010-07-05 00:06:00 来源:WEB开发网   
核心提示:逻辑概述: 需要在一个新的布局中动态加入多个widget对象。接触Android的时间不长,都习惯在findViewById中获取想要的widget对象. 但findViewById获取的对象都必须在当前Activity中ContextView中载入的布局文件中定义过的组件才能被获取到.很明显,我需要在一个新的Layo

逻辑概述: 需要在一个新的布局中动态加入多个widget对象。

接触Android的时间不长,都习惯在findViewById中获取想要的widget对象. 但findViewById获取的对象都必须在当前Activity中ContextView中载入的布局文件中定义过的组件才能被获取到.

很明显,我需要在一个新的Layout(View)中动态加入组件, 那么就必须在Activity中获取到该布局的实例化对象.

PS. setContextView(R.layout.newXmlFile)这种方式只能改变当前布局,而没办法获得对象.

按我的理解Android framework至少应该提供一些获取Resource的api才对,详细看了sdk docs始终没找到相应的方法. 也许有,在其父类中,定义也说不准,我是没找到.

那么这里就不得不需要借助一个抽象类 LayoutInflater ,感谢http://wayfarer.javaeye.com/blog/586156一文中给予的帮助!

View Code JAVA

LayoutInflater inflater = (LayoutInflater) ImagesZoom.this.getSystemService(LAYOUT_INFLATER_SERVICE);

layout = inflater.inflate(R.layout.layout2, null); //layout定义是: View layout

inflate获取出来的对象是View,所有layout布局,均是继承View,做向上转型完全没有问题.

但是它其实真是身份还是Layout,具体是那一种layout就通过强制类型转换,转换成某种类型.

View Code JAVA

RelativeLayout rlayout = (RelativeLayout) layout;

rlayout.addView(reViewer);

这样就获取到Layout对象,就可以动态操作了.via:http://www.lshine.com/index.php/2010/07/android_getlayoutview/

Tags:Android 获取 Res

编辑录入:coldstar [复制链接] [打 印]
赞助商链接