我在Why does LayoutInflater ignore the layout_width and layout_height layout parameters I've specified?上阅读了答案,并希望确保我理解附加到root的内容。 基本上如果你这样做
inflater.inflate(int idOfLayoutFile, ViewGroup parent, boolean AttachToRoot)
并且假设父级不为空
从我得到的答案是,附加到root只会影响inflate方法的返回类型。也就是说,如果attachToRoot
为true
,则方法将返回父级,如果是false
,则该方法将返回资源ID指定的XML文件的根视图。我在这里有正确的想法还是我错过了什么?
答案 0 :(得分:4)
不,错过了什么!
当您将true
作为'附加到根'时,inflater将使指定的布局(由其ID表示)膨胀,然后将其附加到父的根,最后返回父< / p>
但是当你离开'附加到root'到false
时。父层次结构不会改变,只会返回膨胀的布局。
答案 1 :(得分:1)
是的,你是对的 :: 简称
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = LayoutInflater.from(getActivity()).inflate(
R.layout.your_layout, null);
return view;
}
view
引用将保留根元素
布局your_layout
view
引用来查找此的所有子视图
父布局views
,即使activity
不是
已创建答案 2 :(得分:0)
如果您阅读this,您会发现如果您不想附加null
,则不应将ViewGroup
作为根inflater.inflate
的值传递,而应使用3 - false
的参数版本,第3个参数(附加到根)设置为 @Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState)
{
View view = LayoutInflater.from(getActivity()).inflate
(
R.layout.your_layout,
container,
false
);
return view;
}
。即,这样做:
root
来自docs:
LayoutParams
可选视图是生成的层次结构的父级(如果attachToRoot为true),或者只是为返回的层次结构的根提供一组d1 = {u'Orange': [u'OR', u'LI', u'LE'], u'Red': [u'AP', u'ST']}
d2 = {u'Orange': [u'ORANGE', u'LIME', u'LEMON'], u'Red': [u'APPLE', u'STRAWBERRY']}
for k,abbrevs in d1.items():
print("Category:", k)
for abb, name in zip(abbrevs, d2[k]):
print("{} - {}".format(abbrev, name))
值的对象(如果attachToRoot为false。)
this非常好。