`
dengyin2000
  • 浏览: 1224988 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android LayoutInflater的inflate方法中attachToRoot的作用

 
阅读更多
我们在ListView的Adapter的getView方法里面经常会调用两个参数的inflate方法,
mInflater.inflate(R.layout.adv_viewpager, null)


我们可能会发现layout外层的layout_width  layout_height属性都没起作用,全都变成wrap_content的值了。

这个问题就是因为我们使用了错误的参数照成的, 系统在inflate layout的时候 如果传入的root为空的话 就会忽略LayoutParams.

所以在getView里面应该调用
mInflater.inflate(R.layout.adv_viewpager, root, false)


这样在R.layout.adv_viewpager layout xml文件里面所有关于Layout的属性就都能生效。

那么attachToRoot是什么作用呢? 他会自动把layout加到View hierarchy中, 不需要手动调用root.addView,当然在Adapter.getView里面不用手动调用root.addView是因为Adapter已经帮我们做了, 所以如果我们在Adapter.getView里面传入attachToRoot为true的话,就会报错, 因为一个view不能attach两次。

Reference:
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
http://lmbj.net/blog/layoutinflater-and-layoutparams/
0
1
分享到:
评论

相关推荐

    LayoutInflater inflate例子

    总结一下,`LayoutInflater` 的`inflate()` 方法是Android开发中实现动态布局和视图复用的关键工具。理解其工作原理和用法,可以提高代码的灵活性和效率,使开发者能更好地控制应用程序的界面呈现。通过合理利用`...

    LayoutInflater源码分析 inflate方法的区别

    总之,理解`LayoutInflater`的`inflate`方法及其参数是Android开发中的基础技能。正确使用这些方法能够帮助我们构建更加灵活、高效的用户界面。在处理ListView、RecyclerView等需要复用视图的场景时,尤其需要注意...

    Android LayoutInflater中 Inflate()方法应用

    `inflate()` 方法是`LayoutInflater` 的核心方法,它的作用是解析XML布局文件,并将其转换为Android视图层次结构。下面将详细阐述`inflate()` 方法的用法及其与其他方法的区别。 首先,`inflate()` 方法的基本使用...

    Android 中LayoutInflater.inflate()方法的介绍

    Android 中LayoutInflater.inflate()方法的介绍 Android 中LayoutInflater.inflate()方法是Android开发中最常用的方法之一,用于将布局文件转换成View对象。该方法是LayoutInflater类中的一个成员方法,主要用于将...

    Android LayoutInflater.inflate()详解及分析

    总结来说,`LayoutInflater.inflate()` 方法在Android开发中扮演着关键角色,它帮助我们动态地构建和组合UI。理解`inflate()` 的参数以及它们如何影响视图的创建和布局是每个Android开发者必备的知识。正确使用`...

    Android LayoutInflater.inflate源码分析

    总结来说,`LayoutInflater.inflate()` 方法是Android中解析XML布局并创建视图的核心工具。理解它的源码和不同参数的含义,有助于优化性能和提高代码的可维护性。在实际开发中,选择合适的 `inflate()` 方法版本,能...

    Android中使用LayoutInflater要注意的一些坑

    总之,理解和正确使用LayoutInflater.inflate()的参数是避免Android开发中出现布局问题的关键。在使用时,确保提供适当的父容器,合理设置`attachToRoot`,并且始终关注视图的测量和布局过程。通过这些注意事项,...

    Android LayoutInflater深入分析及应用

    在实际开发中,LayoutInflater还有一些高级用法,比如通过`createView()`方法自定义View的创建过程,或者使用LayoutInflater的Factory和Factory2接口来控制View的实例化过程,从而实现更灵活的布局管理。 总的来说...

    Android布局加载之LayoutInflater示例详解

    Android 布局加载中,LayoutInflater 是一个非常重要的组件,负责将 XML 布局文件加载到 View 中。下面我们将详细介绍 LayoutInflater 的使用方法和原理。 一、LayoutInflater 的获取 LayoutInflater 的实例可以...

    Android中LayoutInflater.inflater()的正确打开方式

    LayoutInflater是Android中用于加载布局文件的核心类,通过LayoutInflater的inflate()方法可以将布局文件加载到内存中,并返回对应的View对象。但是,很多开发者对LayoutInflater的使用并不了解,今天我们就来探讨...

    深入解析Android App的LayoutInflate布局

    实际上,`attachToRoot`参数的作用并不是控制最外层布局的宽高是否生效,而是决定`inflate()`方法是否将生成的视图直接添加到`root`视图。当`attachToRoot`为`false`时,新视图不会被添加到`root`,但仍会使用`root`...

    android layoutinflator

    在Android开发中,`LayoutInflater` 是一个至关重要的工具,它主要用于将XML布局文件转换为视图对象(View),使得我们可以在应用程序中展示用户界面。`LayoutInflater` 的主要用途是动态加载和实例化布局,这对于...

    android 动态添加布局

    2. 加载XML布局:使用LayoutInflater的`inflate(int resource, ViewGroup root, boolean attachToRoot)`方法加载布局。resource参数是XML布局文件的ID,root参数是目标父视图,attachToRoot参数决定是否将新加载的...

    Android inflater 用法及不同点

    LayoutInflater 的主要方法是 inflate(),它将 XML 布局文件实例化并将其转换为 View 对象。inflate() 方法有多种重载形式,包括: * public View inflate (int resource, ViewGroup root) * public View inflate ...

    Android 点按钮添加TableRow源码.rar

    在Java代码中,你可以通过`LayoutInflater.from(Context)`获取Inflater实例,并使用`inflate(int resId, ViewGroup root, boolean attachToRoot)`方法。 4. **TableRow的创建与配置**:创建一个新的TableRow对象,...

    android 弹出窗口

    3. 显示PopupWindow:PopupWindow可以通过attachToRoot方法关联到一个父视图,或者通过showAsDropDown或showAtLocation方法指定弹出位置。 ```java // 以父视图的某个子视图为中心显示 View anchorView = ...

    Android加载View中Background详解

    在Android开发中,View的...无论是通过`Activity.setContentView()`还是`LayoutInflater.inflate()`方法来创建和展示布局,最终都会涉及到`LayoutInflater.inflate(XmlPullParser parser...

    Android源码解析

    - `inflate(int resource, ViewGroup root, boolean attachToRoot)`: 加载布局。 - **LocalBroadcastManager源码解析** - LocalBroadcastManager支持局部广播。 - **关键方法**: - `sendBroadcast(Intent ...

    SampleLayoutInflater

    在Android开发中,`LayoutInflater` 是一个至关重要的组件,它负责将XML布局文件转换为视图对象并添加到用户界面中。`SampleLayoutInflater` 通常是一个示例项目,旨在帮助开发者更好地理解和使用`LayoutInflater`。...

Global site tag (gtag.js) - Google Analytics