android LayoutInflater和setContentView的深入解析
作用:LayoutInflater 和 setContentView()方法都是用来完成同一个任务:加载布局文件;
区别1:安卓新人使用setContentView();老人使用LayoutInflater。哈哈,开个玩笑,其实setContentView()内部使用的依旧是LayoutInflater,只不过是把它封装好了而已。
区别2: 使用setContentVIew()方法时,Android会自动在布局文件的最外层再嵌套一个FrameLayout,使得layout_width和layout_height属性有效果。
用法:这里only talk about the LayoutInflater,因为setContentView()这是入门的东西。
第一种写法:
LayoutInflater inflater = LayoutInflater.from(context);
第二种写法:
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
得到LayoutInflater 的实例之后,就可以调用inflate()方法来加载布局了,如下
inflater.inflate(resourceID,root)
resourceID为需要加载布局的id,root是指给该布局外部再嵌套一层父布局,如果不需要root=null即可。
实例如下:假如你要再MainActivity中加入一个布局文件(newLayout)
setContentView(R.layout.activity_main)// MainActivity的布局文件
mainLayout = (LinearLayout) findViewById(R.id.main_layout)
LayoutInflater inflater = LayoutInflater.from(this);
View newLayout = inflater.inflate(R.layout.newLayout, null);
mainLayout.addView(newLayout);
可以看出LayoutInflater技术广泛应用于需要动态加载View的时候,比如ScrollVIew和ListView;
争取下一期博客来分析LayoutInflater的源码,最近工作实在太忙了。
本文地址:https://blog.csdn.net/HNUchaowang/article/details/108149601
上一篇: 摸鱼学Android 四