当前位置: 首页 > wzjs >正文

张家口网站建设郑州网站策划

张家口网站建设,郑州网站策划,大庆网站制作,网站建设最高管理权限前言 对于LayoutInflater.from(this).inflate()方法的几个参数以及用法总是迷迷糊糊,源码看了忘,忘了看,因此决定写这篇博客做下记录。 源码解析 我们知道,调用LayoutInflater.from(this).inflate()方法最终都会走三参的方法 p…

前言

对于LayoutInflater.from(this).inflate()方法的几个参数以及用法总是迷迷糊糊,源码看了忘,忘了看,因此决定写这篇博客做下记录。

源码解析

我们知道,调用LayoutInflater.from(this).inflate()方法最终都会走三参的方法
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)
,这里先简单说明下三个参数:

resource:表示需要加载资源的id;

root:表示resource资源需要被添加的根布局;

attachToRoot:表示resource是否需要被绑定到root上;

接下来我们重点分析下相关源码

inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)

    public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) {final Resources res = getContext().getResources();...View view = tryInflatePrecompiled(resource, res, root, attachToRoot);if (view != null) {return view;}XmlResourceParser parser = res.getLayout(resource);try {return inflate(parser, root, attachToRoot);//重点看这个代码} finally {parser.close();}}

inflate(parser, root, attachToRoot)

  public View inflate(XmlPullParser parser, @Nullable ViewGroup root, boolean attachToRoot) {synchronized (mConstructorArgs) {...View result = root; //result默认赋值为roottry {...if (TAG_MERGE.equals(name)) {.... //merge标签 这里不关注} else {// 将temp赋值为xml资源的根布局viewfinal View temp = createViewFromTag(root, name, inflaterContext, attrs);ViewGroup.LayoutParams params = null;if (root != null) {//如果传入的root参数不为空,则创建root对应的LayoutParamsparams = root.generateLayoutParams(attrs);if (!attachToRoot) {//如果传入的attachToRoot为false,则给temp布局设置LayoutParamstemp.setLayoutParams(params);}}// 绑定childrenrInflateChildren(parser, temp, attrs, true);...if (root != null && attachToRoot) {//如果root不为null并且attachToRoot为true时,将temp添加到root中,并设置对应的LayoutParamsroot.addView(temp, params);}if (root == null || !attachToRoot) {// root为null 或者 attachToRoot为false时,result = tempresult = temp;}}} catch (XmlPullParserException e) {final InflateException ie = new InflateException(e.getMessage(), e);ie.setStackTrace(EMPTY_STACK_TRACE);throw ie;} catch (Exception e) {final InflateException ie = new InflateException(getParserStateDescription(inflaterContext, attrs)+ ": " + e.getMessage(), e);ie.setStackTrace(EMPTY_STACK_TRACE);throw ie;} finally {// Don't retain static reference on context.mConstructorArgs[0] = lastContext;mConstructorArgs[1] = null;Trace.traceEnd(Trace.TRACE_TAG_VIEW);}return result; //返回结果}}

总结

  • 调用LayoutInflater.from(this).inflate(resource,null)不会将resource添加到布局中,结果返回resource资源根布局view,但不会设置对应的父布局LayoutParams属性【resource布局文件最外层的layout_width和layout_height等跟父布局有关的位置属性都会失效】;

  • 调用LayoutInflater.from(this).inflate(resource,root)会将resource添加到root布局中,同时会设置对应的父布局LayoutParams属性,结果返回root本身;

  • 调用LayoutInflater.from(this).inflate(resource,root,true)LayoutInflater.from(this).inflate(resource,root)方法效果一致,结果返回root本身;

  • 调用LayoutInflater.from(this).inflate(resource,root,false)不会将resource添加到root中,结果返回resource资源根布局view,同时会设置对应的父布局LayoutParams属性

  • 下面代码效果相同;

LayoutInflater.from(this).inflate(resource,root)
等同于
LayoutInflater.from(this).inflate(resource,root,true)
等同于
View resourceView = LayoutInflater.from(this).inflate(resource,root,false)
root.addView(resourceView)

结语

如果以上文章对您有一点点帮助,希望您不要吝啬的点个赞加个关注,您每一次小小的举动都是我坚持写作的不懈动力!ღ( ´・ᴗ・` )


文章转载自:

http://1Py7tZZ3.dcccL.cn
http://qDOk209r.dcccL.cn
http://TnPVnSR5.dcccL.cn
http://6L9x7kCB.dcccL.cn
http://FnAE8nOY.dcccL.cn
http://eim11Sht.dcccL.cn
http://4rWLcW6T.dcccL.cn
http://OoTYO9dx.dcccL.cn
http://TgMGKr7H.dcccL.cn
http://AVSjJl15.dcccL.cn
http://btVbsGjg.dcccL.cn
http://gwuNYkIr.dcccL.cn
http://hnzhhS73.dcccL.cn
http://D2oHbh20.dcccL.cn
http://8VYcX9pN.dcccL.cn
http://b0htIF9A.dcccL.cn
http://0A9dhWoD.dcccL.cn
http://uE9YbKv2.dcccL.cn
http://LovqLZLE.dcccL.cn
http://ygJagQVp.dcccL.cn
http://sBZbddOU.dcccL.cn
http://dLkglRv4.dcccL.cn
http://cF8u8cBU.dcccL.cn
http://AIpdpe0b.dcccL.cn
http://fQfhFV9B.dcccL.cn
http://DQDLW5R8.dcccL.cn
http://ysGx2eFp.dcccL.cn
http://oNUvFzdk.dcccL.cn
http://6H6ADCCj.dcccL.cn
http://yWyFThB9.dcccL.cn
http://www.dtcms.com/wzjs/748692.html

相关文章:

  • 网站建设具体项目及价格网络广告营销的案例
  • 延庆网站制作企业智能网站后台管理系统
  • 页面设计排版网站最新新闻资讯
  • 网站组建修改wordpress 字体
  • 电子科技学校网站建设怎样制作一个自己的网页呢
  • 网站建设熊掌号里属于什么领域嘉兴网站建设推荐浙江华企
  • 如何自己做视频网站网站友链怎么添加
  • 页面在线设计网站五八精准恶意点击软件
  • 做公司网站应准备什么材料制作一个网站费用
  • 建设网站运营方案同性男做的视频网站
  • 成都小程序定制开发seo外贸公司推广
  • 做网站要钱的吗软文的本质是什么
  • 永春网站设计网络app开发网站建设价格
  • 海口网站开发制作洛阳网站建设建站系统
  • 二手域名做网站不收录网站设计需要哪些
  • 网站怎么做数据备份山西住房与城乡建设厅定额网站
  • 设计logo网站免自己弄公司网站
  • 淘宝做基础销量网站化妆品品牌网站如何做
  • 网站建设需要的设备wordpress 网页位置
  • 铜陵做网站的顺德乐从有做阿里巴巴的网站吗
  • 涿州做网站公司微信公众平台开发者
  • 怎么申请做网站做盗版小说网站怎么样
  • 网站设网页设计wordpress 分类列表页
  • 1个空间做2个网站吗做网站 设备
  • 果汁网站模板app运营专员
  • 山东省建设执业资格注册管理中心网站广州建站工作室
  • 泰州网站制作工具wordpress改投票系统
  • 网站建设需要学编程吗建设报名系统网站
  • 高端定制网站是什么网络推广外包怎么样
  • 公司做企业网站景区网站的建设公司