对于LayoutInflater.inflate参数的用途,我对 attachToRoot 文档并不十分清楚。



有人可以详细解释一下,尤其是根 View ,还可以举例说明truefalse值之间的行为变化吗?

最佳答案

现在或现在

“第三”参数attachToRoot是true还是false之间的主要区别是。



是:将 subview 添加到父 View 右现在
否:将 subview 添加到父 View 暂时不添加
以后添加。 `



以后就是当你使用parent.addView(childView)的时候

一个常见的误解是,如果attachToRoot参数为false,则不会将 subview 添加到父 View 。 错误
在这两种情况下, subview 都将添加到parentView中。这只是时间的问题。

inflater.inflate(child,parent,false);
parent.addView(child);

等效
inflater.inflate(child,parent,true);

很大的
当您不负责将 subview 添加到父 View 时,绝对不要将attachToRoot传递为true。
例如,当添加片段时
public View onCreateView(LayoutInflater inflater,ViewGroup parent,Bundle bundle)
  {
        super.onCreateView(inflater,parent,bundle);
        View view = inflater.inflate(R.layout.image_fragment,parent,false);
        .....
        return view;
  }

如果您将第三个参数作为true传递,则会因为此人而得到IllegalStateException。
getSupportFragmentManager()
      .beginTransaction()
      .add(parent, childFragment)
      .commit();

由于您已经错误地在onCreateView()中添加了子片段。调用add将告诉您 subview 已添加到父 View 。因此 IllegalStateException
在这里您不负责添加childView,FragmentManager负责。因此,在这种情况下,始终传递false。

注意:我也已经阅读到,如果attachToRoot为false,parentView将不会获得childView touchEvents。但是我还没有测试过。

关于android - LayoutInflater attachToRoot参数是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12567578/

10-10 20:54