¿Qué significa inflar una vista desde un archivo xml?

Resuelto Brendan Weinstein asked hace 54 años • 7 respuestas

Soy nuevo en el desarrollo de Android y sigo encontrando referencias a Inflar vistas desde un archivo xml de diseño. Busqué en Google y busqué en la guía de desarrollo, pero todavía no pude entender lo que significa. Si alguien pudiera dar un ejemplo muy simple, se lo agradecería mucho.

Brendan Weinstein avatar Jan 01 '70 08:01 Brendan Weinstein
Aceptado

Cuando escribes un diseño XML, el sistema operativo Android lo inflará, lo que básicamente significa que se representará creando un objeto de vista en la memoria. Llamemos a eso inflación implícita (el sistema operativo inflará la vista por usted). Por ejemplo:

class Name extends Activity{
    public void onCreate(){
         // the OS will inflate the your_layout.xml
         // file and use it for this activity
         setContentView(R.layout.your_layout);
    }
}

También puedes inflar las vistas explícitamente usando el archivo LayoutInflater. En ese caso tienes que:

  1. Obtener una instancia delLayoutInflater
  2. Especifique el XML para inflar
  3. Utilice el devueltoView
  4. Establecer la vista de contenido con vista devuelta (arriba)

Por ejemplo:

LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
setContentView(theInflatedView) // 4
Cristian avatar Jan 01 '2011 23:01 Cristian

"Inflar" una vista significa tomar el diseño XML y analizarlo para crear la vista y los objetos del grupo de vistas a partir de los elementos y sus atributos especificados dentro, y luego agregar la jerarquía de esas vistas y grupos de vistas al grupo de vistas principal. Cuando llamas a setContentView(), adjunta las vistas que crea al leer el XML a la actividad. También puedes usar LayoutInflater para agregar vistas a otro grupo de vistas, lo que puede ser una herramienta útil en muchas circunstancias.

jjb avatar Jan 01 '2011 23:01 jjb

Inflar es el proceso de agregar una vista (.xml) a la actividad en tiempo de ejecución. Cuando creamos un listView inflamos cada uno de sus elementos dinámicamente. Si queremos crear un ViewGroup con múltiples vistas como botones y vista de texto, podemos crearlo así:

Button but = new Button();
but.setText ="button text";
but.background ...
but.leftDrawable.. and so on...

TextView txt = new TextView();
txt.setText ="button text";
txt.background ... and so on...

Luego tenemos que crear un diseño donde podamos agregar las vistas anteriores:

RelativeLayout rel = new RelativeLayout();

rel.addView(but);

Y ahora, si queremos agregar un botón en la esquina derecha y una vista de texto en la parte inferior, tenemos que trabajar mucho. Primero creando instancias de las propiedades de la vista y luego aplicando múltiples restricciones. Esto lleva mucho tiempo.

Android nos facilita la creación de un .xml simple y el diseño de su estilo y atributos en xml y luego simplemente inflarlo donde lo necesitemos sin la molestia de establecer restricciones mediante programación.

LayoutInflater inflater = 
              (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflater.inflate(R.layout.your_menu_layout, mainLayout, true);
//now add menuLayout to wherever you want to add like

(RelativeLayout)findViewById(R.id.relative).addView(menuLayout);
Zar E Ahmer avatar Nov 05 '2014 10:11 Zar E Ahmer

Una definición sencilla de inflación podría ser convertir el código XML a código Java. Solo una forma de entender, por ejemplo, si tenemos una etiqueta en XML, el sistema operativo tiene que crear un objeto Java correspondiente en la memoria, por lo que inflatter lee las etiquetas XML y crea los objetos correspondientes en Java.

user3458211 avatar Oct 25 '2019 03:10 user3458211