Android LayoutInflater如何正常工作?

时间:2015-07-27 18:06:22

标签: android

我知道它将XML布局转换为相应的布局对象。 这两行的输出View对象之间有什么区别?

Inflater.inflate(R.layout.fragment_main, container, true)

Inflater.inflate(R.layout.fragment_main, container, false)

我已经看过LayoutInflater documentation,但没有得到这个概念。

2 个答案:

答案 0 :(得分:3)

两者之间的区别在于前者将膨胀的视图直接添加到容器中并返回容器本身。后者不会将膨胀的视图添加到容器中,而inflater会返回它而不是容器。确切地说,inflater总是返回膨胀布局的根。当你传递true作为第三个参数时,这是container,否则是膨胀视图的根

答案 1 :(得分:0)

如果attachToRoot参数设置为true,则布局将直接添加到ViewGroup的视图层次结构中。它将它添加到容器的布局中。如果假设Container具有FrameLayout作为根布局。然后,这会将膨胀的布局添加为FrameLayout的子项。

如果attachToRoot为false,则布局会膨胀,但不会添加到布局中。也就是说,它不是立即绘制的。

建议使用false。因此,您可以在需要时附加此活动。 Orelse,只要执行onCreateView(),它就会附加到它的根目录。

如果为false - 独立 如果为真 - 父母的孩子。任何事件都会转移到父母身上。