View.inflate与LayoutInflater

Hei*_*erg 24 android

使用LayoutInflater和静态方法的主要区别是什么View.inflate()?使用它们中的任何一个是否有任何缺点,或者它们可能用于不同的目的?

And*_*Res 33

如果看看View.inflate()我们看到的来源:

public static View inflate(Context context, int resource, ViewGroup root) {
        LayoutInflater factory = LayoutInflater.from(context);
        return factory.inflate(resource, root);
}
Run Code Online (Sandbox Code Playgroud)

所以,在内部,类的inflate()方法View使用LayoutInflater,这使我假设没有区别.

  • 如果要一次膨胀多个视图,则需要具有本地LayoutInflater,因此不需要为每个视图重新创建它. (9认同)

小智 8

View.inflate()内部调用LayoutInflator.inflate(resource, root)哪个调用LayoutInflator.inflate(resource, root, root != null).第三个参数是booleanAttachToRoot,文档描述为:

是否应将膨胀的层次结构附加到根参数?如果为false,则root仅用于为XML中的根视图创建LayoutParams的正确子类.

换句话说,使用View.inflate(),您无法告诉充气器不要将新视图附加到参考根ViewGroup.