Cómo inflar una vista con un diseño

Resuelto Michal Dymel asked hace 54 años • 15 respuestas

Tengo un diseño definido en XML. Contiene también:

<RelativeLayout
    android:id="@+id/item"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>

Me gustaría inflar este RelativeView con otro archivo de diseño XML. Puedo usar diferentes diseños dependiendo de la situación. ¿Cómo debería hacerlo? Estaba probando diferentes variaciones de

RelativeLayout item = (RelativeLayout) findViewById(R.id.item);
item.inflate(...)

Pero ninguno de ellos funcionó bien.

Michal Dymel avatar Jan 01 '70 08:01 Michal Dymel
Aceptado

No estoy seguro de haber seguido su pregunta: ¿está intentando adjuntar una vista secundaria a RelativeLayout? Si es así, desea hacer algo como:

RelativeLayout item = (RelativeLayout)findViewById(R.id.item);
View child = getLayoutInflater().inflate(R.layout.child, null);
item.addView(child);
Graeme Duncan avatar Feb 25 '2010 17:02 Graeme Duncan

Inflas un recurso XML. Consulte el documento LayoutInflater .

Si su diseño está en mylayout.xml , haría algo como:

View view; 
LayoutInflater inflater = (LayoutInflater)   getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
view = inflater.inflate(R.layout.mylayout, null);

RelativeLayout item = (RelativeLayout) view.findViewById(R.id.item);
ccheneson avatar Feb 25 '2010 16:02 ccheneson

Aunque la respuesta es tardía, pero me gustaría agregar esa forma de obtener esto.

LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = layoutInflater.inflate(R.layout.mylayout, item );

¿Dónde itemestá el diseño principal donde desea agregar un diseño secundario?

Shaista Naaz avatar May 04 '2011 16:05 Shaista Naaz

Es útil agregar a esto, aunque es una publicación antigua, que si la vista secundaria que se está inflando desde xml se va a agregar a un diseño de grupo de vistas, debe llamar a inflate con una pista de a qué tipo de grupo de vistas se dirige. para ser agregado. Como:

View child = getLayoutInflater().inflate(R.layout.child, item, false);

El método inflate está bastante sobrecargado y describe esta parte del uso en los documentos. Tuve un problema en el que una vista única inflada desde xml no se alineaba correctamente en el elemento principal hasta que hice este tipo de cambio.

Maximus avatar Jun 01 '2010 22:06 Maximus