膨胀布局方法和这些参数是什么区别

时间:2015-12-14 08:05:47

标签: android android-layout view android-inflate

我发现你可以用这3种方式来扩充布局。但无法在各自的陈述中使用第2和第3个参数。什么是ViewGroup和attachToroot参数?

首次使用外部活动:

LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE);
 View view = inflater.inflate( R.layout.myNewInflatedLayout, ViewGroup);
 View view = inflater.inflate( R.layout.myNewInflatedLayout, ViewGroup, attachedToroot);

Button myButton = (Button) view.findViewById( R.id.myButton );

2 个答案:

答案 0 :(得分:1)

我将尝试回答您对使用第二个参数和第三个参数的疑虑。

第二个参数是ViewGroup,在文档中描述为:

  

public View inflate(int资源,ViewGroup根目录)

     

从指定的xml资源中膨胀新的视图层次结构。如果出现错误,则抛出InflateException。

     

root 可选视图,作为生成的层次结构的父级。

     

返回

     

膨胀层次结构的根视图。如果提供了root,那就是   根视图;否则它是膨胀的XML文件的根。

基于此,我看到了两种可能性:

  1. 您将viewgroup设置为null。在这种情况下,您的布局将在活动中膨胀,但该膨胀的层次结构的根视图将是xml文件的根。因此,如果您的xml具有相对布局或任何其他布局作为根元素,那么它将成为您的膨胀层次结构的根。你会有类似的东西:

    <xml> // Whatever is the root of this xml, is your root for the inflated hierarchy.

  2. 如果您将视图组设置为其他内容,那么它将成为膨胀层次结构的根。所以,实际上你会有这样的事情: <Your Viewgroup> <Your xml> </Your Viewgroup> 这里很明显,在这种情况下,您指定的视图组将是膨胀层次结构的父级。所以我认为这完全取决于你的要求。

  3. 关于第三个参数:Confusion regarding inflater.inflate Android documentation

    您可以在此链接上阅读我的答案,以了解更多相关信息。希望这会对你有所帮助。

答案 1 :(得分:0)

如果您查看developer.android.com以供参考,您将看到四种公共方法。

inflate

最常用的两个是你在问题中写的那些。

inflater.inflate( R.layout.myNewInflatedLayout, ViewGroup);

inflater.inflate( R.layout.myNewInflatedLayout, ViewGroup, attachedToroot);

以下是关于布局通胀的非常棒article的摘录。

  

第一个参数指向要扩充的布局资源。   第二个参数是您所在层次结构的根视图   膨胀要附加的资源。当第三个参数是   目前,它管理是否附加了膨胀的视图   通货膨胀后供应的根。

我建议你一直读到最后。希望这有帮助。 :)