对于LayoutInflater.inflate
参数的用途,我对 attachToRoot
文档并不十分清楚。
有人可以详细解释一下,尤其是根 View ,还可以举例说明true
和false
值之间的行为变化吗?
最佳答案
现在或现在
“第三”参数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/