Android获取Res下Layout对象
2010-07-05 00:06:00 来源:WEB开发网逻辑概述: 需要在一个新的布局中动态加入多个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/
赞助商链接