¿Qué hace la clase LayoutInflater? (En Android)

No puedo entender el uso de LayoutInflater en Android.

¿Cuál es exactamente el papel de LayoutInflater, y cómo utilizarlo para una sencilla aplicación para Android?

¿Qué es Layoutinflater?

LayoutInflater es una clase (envoltorio de alguna implementación o servicio), puede obtener uno:

 LayoutInflater li = LayoutInflater.from(context); 

¿Cómo usar Layoutinflater?

Alimenta un archivo de diseño XML. No es necesario dar la dirección de archivo completa, sólo su identificador de recursos, generado automáticamente en la clase R Por ejemplo, un archivo de diseño que tiene el siguiente aspecto:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/text_view" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout> 

Guardado como /res/layout/my_layout.xml .

Se lo das a LayoutInflater como:

  View v = li.inflate(R.layout.my_layout,null,false); 

¿Qué hizo Layout Inflater?

Que v es ahora un objeto LinearLayout ( LinearLayout extends View ) , y contiene un objeto TextView , ordenado en orden exacto y con todas las propiedades establecidas, tal como describimos en el XML anterior.


TL; DR: Un LayoutInflater lee un XML en el que describimos cómo queremos que sea un diseño de interfaz de usuario. A continuación, crea objetos de View reales para la interfaz de usuario desde ese XML.

Cuando ejecuta setContentView(layout file name) , puede ejecutar findViewById(id of the widget) . Usted no necesita hacer algo como xyz.findViewById . El contexto de la aplicación se establece en ese archivo de diseño y todas findBiewById llamadas findBiewById se referirán a ese archivo de diseño.

Hay casos en los que necesita recoger un archivo de diseño más, como un CustomDialog, ListElement o un Toast personalizado. En este momento no querrá crear una actividad sólo para estos pequeños componentes de interfaz de usuario, que en ese momento necesita programaticamente una referencia programática a su archivo de diseño, para que pueda ejecutar findViewById en él.

Inflate, sopla la disposición como un globo y le da el globo para que usted mire alrededor de él todos los colores y objetos dibujados en él :). Inflate le da la referencia de objeto a ese diseño para llamar a findViewById.

Espero que esto despeje.

Algunos conceptos básicos para LayoutInflater-

  • LayoutInflater se utiliza para manipular la pantalla de Android mediante diseños XML predefinidos.
  • Esta clase se utiliza para instanciar el archivo XML de presentación en sus objetos de vista correspondientes.

  • Nunca se utiliza directamente. En lugar,

  • getLayoutInflater() o getSystemService(String) para recuperar una instancia estándar de LayoutInflater que ya esté conectada al contexto actual.

Desde los documentos Android:

Instancia un archivo XML de diseño en sus objetos de vista correspondientes. Nunca se utiliza directamente. En su lugar, use getLayoutInflater () o getSystemService (String) para recuperar una instancia LayoutInflater estándar que ya está conectada al contexto actual y correctamente configurada para el dispositivo en el que se está ejecutando. Por ejemplo:

 LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 

Útil en la creación de vistas personalizadas

Ver

Lo más probable es que se cierre, pero el papel del inflador de diseño es crear una view desde el archivo de diseño suministrado

 View row=getLayoutInflater.inflate(R.layout.list_item,parent,false); 

Está creando la vista desde el archivo R.layout.list_item y probando esa view .

  • Alinear TextView debajo de un ImageButton en un diseño relativo
  • ¿Puedo usar una definición de dos botones cambiando entre ellos?
  • CoordinatorLayout + AppbarLayout + Viewpager no cambia el tamaño del diseño secundario
  • Cómo configurar TimePicker show con formato 24h
  • Alinear ProgressBar horizontal a la parte superior (quitar hueco)
  • ¿Cómo se puede escalar y azulejar un mapa de bits dibujable que se utiliza como fondo?
  • ¿Cómo crear una notificación con una vista personalizada, pero con una apariencia nativa?
  • Cómo crear un tema y estilo xml para el proyecto android
  • Square ImageView
  • Cómo eliminar el círculo RadioButton en Android 4.4.4
  • TextView empuja los controles situados a la derecha de la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.