为什么没有指定root的“inflate”方法会忽略xml参数?

时间:2013-09-15 19:01:07

标签: android xml android-layout

我读过这个答案:https://stackoverflow.com/a/5027921/1364174

并且想知道为什么依赖于root参数inflate方法会改变其行为,从而大大造成混淆。

根据答案,这段代码:

view = LayoutInflater.from(getBaseContext()).inflate(R.layout.smallred, null);
parent.addView(view);

create将创建在smallred.xml中指定的视图,完全忽略标记的属性,用一些神秘的默认值替换它们。

但是这段代码将尊重smallred.xml中的属性

view = LayoutInflater.from(getBaseContext()).inflate(R.layout.smallred, parent, false);
parent.addView(view);

为什么?为什么我们需要指定后面插入视图的root / parent,nflate“方法? 为什么这有必要?为什么我们不会从.xml文件中获取属性?

1 个答案:

答案 0 :(得分:0)

可能是因为只有在实际给视图充气时才读取属性,所以一旦你在没有提供父项的情况下给它充气,你就会在膨胀的视图中缺少信息。然后,如果将它添加到父级并不重要,数据就不存在,因此布局不会像预期的那样。

当他夸大你的观点时,layoutinflater不知道你的父母。所以它甚至都不知道它的课程。如果你注意到,每个布局都有自己的LayoutParams类,你必须告诉layoutinflater它必须使用哪一个,否则它们将被丢弃。