android - Cómo inflar una vista con un diseño




7 Answers

Infla un recurso XML. Ver el documento de LayoutInflater .

Si tu diseño está en un mylayout.xml , harías 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);
android android-layout layout-inflater android-inflate

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.




Es útil agregar a esto, a pesar de que es una publicación antigua, que si la vista secundaria que se está inflando desde xml se agrega a un diseño de grupo de vista, debe llamar a inflar con una pista de qué tipo de grupo de vista se va para ser añadido a. Me gusta:

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

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




inflación de diseño

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






AttachToRoot establecido en True

Solo piense que especificamos un botón en un archivo de diseño XML con su ancho de diseño y la altura de diseño configurada para match_parent.

<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/custom_button">
</Button>

En este botón, haga clic en Evento. Podemos configurar el siguiente código para inflar el diseño de esta actividad.

LayoutInflater inflater = LayoutInflater.from(getContext());
inflater.inflate(R.layout.yourlayoutname, this);

Espero que esta solución funcione para usted.




¿Si está tratando de adjuntar una vista secundaria a RelativeLayout? puedes hacerlo siguiendo

RelativeLayout item = (RelativeLayout)findViewById(R.id.item);
View child = getLayoutInflater().inflate(R.layout.child, item, true);



Usé el siguiente fragmento de código para esto y funcionó para mí.

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.item);
View child = getLayoutInflater().inflate(R.layout.child, null);
linearLayout.addView(child);



Related