我读过这个答案: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文件中获取属性?
答案 0 :(得分:0)
可能是因为只有在实际给视图充气时才读取属性,所以一旦你在没有提供父项的情况下给它充气,你就会在膨胀的视图中缺少信息。然后,如果将它添加到父级并不重要,数据就不存在,因此布局不会像预期的那样。
当他夸大你的观点时,layoutinflater不知道你的父母。所以它甚至都不知道它的课程。如果你注意到,每个布局都有自己的LayoutParams类,你必须告诉layoutinflater它必须使用哪一个,否则它们将被丢弃。