android - studio - View.inflate vs LayoutInflater
layoutinflater android ejemplo (3)
¿Cuál es la diferencia principal entre usar LayoutInflater
y el método estático View.inflate()
? ¿Hay algún inconveniente en el uso de alguno de ellos o tal vez tienen propósitos diferentes?
Si miramos la fuente de View.inflate()
vemos esto:
public static View inflate(Context context, int resource, ViewGroup root) {
LayoutInflater factory = LayoutInflater.from(context);
return factory.inflate(resource, root);
}
Por lo tanto, internamente, el método LayoutInflater
inflate()
de la clase View
usa el LayoutInflater
, lo que me hace suponer que no hay diferencia.
Solo tengo un problema de eso. Y aquí es lo que encuentro.
View.inflate utiliza LayoutInflator.inflate (id, Viewparent). Ignorará el layoutparam de los padres si el parámetro Viewparent es nulo.
Pero. Inflator.inflate tiene otro inflado de api (id, View parent, boolean attach). Este método es útil cuando necesita iniciar esta vista con el layoutparamter principal
View.inflate()
llama internamente a LayoutInflator.inflate(resource, root)
que a su vez llama a LayoutInflator.inflate(resource, root, root != null)
. El tercer parámetro es booleanAttachToRoot, que los documentos describen como:
¿Debería adjuntarse la jerarquía inflada al parámetro raíz? Si es falso, la raíz solo se usa para crear la subclase correcta de LayoutParams para la vista raíz en el XML.
En otras palabras, con View.inflate()
, no puede decirle al inflador que no adjunte su nueva vista a la raíz de referencia ViewGroup.