当前位置: 首页 > 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://www.dtcms.com/wzjs/553199.html

相关文章:

  • 网站开发类虚拟主机和vps的区别
  • 百度站内搜索海口网站排名推广
  • 价格便宜的网站建设郑州网站提升排名
  • 淘宝联盟推广网站怎么建设最新网站模板
  • 中国山东建设监理协会网站南昌电子商务网站建设
  • 做网站申请域名的流程南阳网站推广价格
  • 大庆市住房和城乡建设局网站wordpress文章前台看不到
  • 网站模版自适应网站开发管理系统有哪些
  • 江苏宜安建设有限公司网站蓝色高科技网站模板
  • 网站功能建设描述书网站备案是域名备案还是空间备案
  • 自己编写网站vs做网站用3层架构
  • 提供常州微信网站建设微信营销系统
  • 新站如何快速收录包装设计网页
  • 建设网站宣传外贸一般用什么平台
  • 长沙企业建站在线咨询空间登录
  • 一个虚拟主机绑定2个网站长春网站建设解决方案
  • 网页设计大赛网站开发网站空间管理权限
  • vue做网站前台网站建设贰金手指科捷9
  • 网站留白佛山营销网站开发
  • 中山网站建设招聘网络规划设计师岗位
  • 济南网络公司建站海南网络电视台
  • 网站推广的方法枫子公众号开发者id在哪里查看
  • 电脑本地网站建设安阳县事业单位招聘2021
  • 网站编程赚钱网站维护需要什么技能
  • 黑龙江网站开发长沙旅游攻略美食
  • 东莞做网站公司首选北京房产网58同城网
  • 个人网站需要备案吗电商指的是什么行业
  • 网站百度没收录自治区住房和城乡建设部网站
  • 百度主机做视频网站怎么样广元网站开发
  • 余江区建设局网站老薛主机wordpress模板