欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android LayoutInflater和setContentView的深入解析

程序员文章站 2022-09-01 08:45:15
作用:LayoutInflater 和 setContentView()方法都是用来完成同一个任务:加载布局文件;区别1:安卓新人使用setContentView();老人使用LayoutInflater。哈哈,开个玩笑,其实setContentView()内部使用的依旧是LayoutInflater,只不过是把它封装好了而已。区别2: 使用setContentVIew()方法时,Android会自动在布局文件的最外层再嵌套一个FrameLayout,使得layout_width和layout_heig...

作用: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

相关标签: java android