Android LayoutInflate的基本知识

LayoutInflate:

1,是什么?LayoutInflate就是传说中的布局泵,是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。

2,实例化:

LayoutInflater 实例的三种方式
1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater() 
2. LayoutInflater inflater = LayoutInflater.from(context);  
3. LayoutInflater inflater =  (LayoutInflater)context.getSystemService
这三种方式最终本质是都是调用的Context.getSystemService()。具体看: http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html
另外getSystemService()是Android很重要的一个API,它是 Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。

所以必须在activity的上下文环境下才能使用布局泵,不是想在哪里用就可以用的·;

3,加载布局;

Inflate(resId , null )不能正确处理宽和高是因为:layout_width,layout_height是相对了父级设置的,必须与父级的LayoutParams一致。而加载的view的getLayoutParams为null,不正常显示,源码分析主要是没有设置setLayoutParams(params)

Inflate(resId , parent,false)加载的view 可以正确处理,因为加载的view设置了setLayoutParams(params);这个params正是父类布局generateLayoutParams(attrs);得到的,正常显示,原来参数设成什么就是什么

Inflate(resId , parent,true )不仅能够正确的处理,而且已经把resId这个view加入到了parent,并且返回的是parent,和以上两者返回值有绝对的区别;

总结一句:加载布局用:Inflate(resId , parent,false);

具体参考偶像;鸿神的博客:http://blog.csdn.net/lmj623565791/article/details/38171465



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值