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的源码,最近工作实在太忙了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值