Android开发经验笔记我是程序员;您好程先生;叫我序员就好了

LayoutInflater的inflate函数用法

2015-01-14  本文已影响228人  陈利健

LayoutInflater作用是将layout的xml布局文件实例化为View类对象。通俗的说, LayoutInflater的inflate函数就相当于将一个xml中定义的布局找出来,变成一个实例以供使用。
实例化LayoutInfater有三种方式:

LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LayoutInflater inflater = LayoutInflater.from(context); //(该方法实质就是第一种方法,可参考源代码)
LayoutInflater inflater = getLayoutInflater();  //(在Activity中可以使用,实际上是View子类下window的一个函数)

然后可以调用其inflate方法实例化xml文件了:

View layout = inflater.inflate(R.layout.main, null);

setContentView和inflate的区别:

setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);

LayoutInflater inflate = LayoutInflater.from(this);
View view = inflate.inflate(R.layout.main,null);
setContentView(view);

setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,在有需要的时候再用setContentView(view)显示出来。

比如一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。

又比如如果你的Activity里如果用到别的layout,比如对话框的layout,而且你还要设置对话框上的layout里的组件(像图片ImageView,文字TextView)上的内容,你就必须用inflate()先将对话框的layout找出来,然后再用这个layout对象去找到它上面的组件(使用这个layout对象的findViewById方法)

上一篇 下一篇

猜你喜欢

热点阅读