Android—LayoutInflater学习笔记
LayoutInflater的的主要用处:使用LayoutInflater来载入界面,类似于findViewById()在Activity中加载Widget组件一样。区别在于与LayoutInflater用于对layout文件夹中的.xml文件进行加载,简单的说就是:LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
有以下三种方法来取得LayoutInflater:
1 LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 2 View layout = inflater.inflate(R.layout.main, null); 3 LayoutInflater inflater = LayoutInflater.from(context); 4 //该方法实质就是第一种方法,可参考源代码 5 View layout = inflater.inflate(R.layout.main, null); 6 LayoutInflater inflater = getLayoutInflater(); 7 //在Activity中可以使用,实际上是View子类下window的一个函数 8 View layout = inflater.inflate(R.layout.main, null);
对比setContentView()和inflater区别:
1 public class MyInflate extends Activity{ 2 private TextView tv; 3 public void OnCreate(Bundle savedInstanceState){ 4 super.onCreate(savedInstanceState); 5 //setContentView(R.layout.main); 6 //tv = (TextView) findViewById(R.id.tv); 7 8 LayoutInflater inflate = LayoutInflater.from(this); 9 View view = inflate.inflate(R.layout.main,null); 10 setContentView(view); 11 //上面注释语句执行效果和没注释语句执行效果一样 12 } 13 }
区别:
setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。
public View inflate(int Resourece,ViewGroup root) 作用:填充一个新的视图层次结构从指定的XML资源文件中 reSource:View的layout的ID root: 生成的层次结构的根视图 return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。
其余几个重载的inflate函数类似。
浙公网安备 33010602011771号