博客
关于我
Android-LayoutInflater.inflate
阅读量:234 次
发布时间:2019-02-28

本文共 1621 字,大约阅读时间需要 5 分钟。

获得LayoutInflater 实例的三种方式

在Android开发中,LayoutInflater 是一个非常重要的工具类,它用于从XML布局文件中加载布局资源。下面我们将详细介绍如何获取LayoutInflater 实例,以及其常用的 inflate 方法。

获得LayoutInflater 实例的三种方式

尽管有三种不同的方式可以获得LayoutInflater 实例,但它们的本质都是调用 Context.getSystemService() 方法。具体来说:

  • 通过Context 获取

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    这是最常见的方式,适用于Activity、Fragment等任何需要加载布局的Context。

  • 通过Context的静态方法

    LayoutInflater inflater = LayoutInflater.from(context);

    这种方式同样是通过调用Context的方法获得LayoutInflater 实例,适用于Fragment等场景。

  • 通过Activity或Fragment类的方法

    LayoutInflater inflater = getLayoutInflater();

    这种方式主要用于Activity类,直接调用类方法获取LayoutInflater 实例。

  • 这三种方式本质上都是相同的,都是通过Context获取LayoutInflater 实例。


    inflate 方法参数介绍

    LayoutInflater 的 inflate 方法是用来加载布局文件的核心方法。从Android官方API中可以看到,inflate 方法有四个重载版本,但它们最终都会调用相同的实现方式。最常用的版本是以下这个:

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

    inflate 方法的作用

    inflate 方法的主要作用是将一个由XML文件定义的布局文件加载到内存中。与 findViewById 方法不同,inflate 是用来加载整个布局文件,而不是从布局文件中查找特定的控件。


    resource 参数的作用

    • resource:指定要加载的布局文件的资源ID。这个参数告诉LayoutInflater从哪个XML文件中获取布局定义。

    root 参数的作用

    • root:指定将加载的布局文件作为子布局的根控件(根节点)。

    attachToRoot 参数的作用

    • attachToRoot:决定是否将加载的子布局添加到父布局(root)中。

    attachToRoot 为 false 的疑惑

    如果 root 不为 null,而 attachToRoot 为 false,这看起来有些奇怪。很多开发者可能会问:既然不将布局添加到根控件中,那为什么不直接将 root 设为 null 呢?

    其实,这个参数的设计目的是为了解决一个实际问题:布局文件的根节点可能有 layout_width 和 layout_height 属性。如果不将其添加到一个父容器中,这些属性将失效。因此,当 root 不为 null 而 attachToRoot 为 false 时,root 只是用来为子布局提供布局参数(如宽度和高度)的作用,而不会将子布局添加到父布局中。

    这种情况在开发中可能会有实际用途,例如当你需要为一个布局提供上下文布局参数时,但不希望实际将布局添加到父容器中。


    参考

    转载地址:http://mjss.baihongyu.com/

    你可能感兴趣的文章
    POI 的使用
    查看>>
    poi 读取单元格为null者空字符串
    查看>>
    poi-tl简介与文本/表格和图片渲染
    查看>>
    pointnet分割自己的点云数据_PointNet解析
    查看>>
    POI实现Excel导入Cannot get a text value from a numeric cell
    查看>>
    POI实现Excel导入时提示NoSuchMethodError: org.apache.poi.util.POILogger.log
    查看>>
    POI实现Excel导出时常用方法说明
    查看>>
    POI导出Excel2003
    查看>>
    POI数据获取及坐标纠偏
    查看>>
    Quartz入门看这一篇文章就够了
    查看>>
    POI解析Excel【poi的坑——空行处理】
    查看>>
    POI:POI+JXL实现xls文件添加水印
    查看>>
    POI:POI实现docx文件添加水印
    查看>>
    POJ 1006
    查看>>
    Quartz中时间表达式的设置-----corn表达式
    查看>>
    poj 1035
    查看>>
    POJ 1061 青蛙的约会 (扩展欧几里得)
    查看>>
    Quartz2.2.1简单使用
    查看>>
    POJ 1080 Human Gene Functions(DP:LCS)
    查看>>
    Quant 开源项目教程
    查看>>