studio - ¿Qué hace la clase LayoutInflater?(en Android)
layout_inflater_service (5)
De la documentación de Android:
Crea una instancia de 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 estándar de LayoutInflater que ya esté conectada al contexto actual y configurada correctamente 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
No puedo entender el uso de LayoutInflater en Android.
¿Cuál es exactamente el rol de LayoutInflater y cómo usarlo para una aplicación de Android simple?
Es más probable que se cierre, pero la función de inflador de diseño es crear una view
desde el archivo de diseño proporcionado
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
.
cuando ejecute setContentView(layout file name)
, puede ejecutar findViewById(id of the widget)
. No necesitas hacer algo como xyz.findViewById
. El contexto de su aplicación se establece en ese archivo de diseño y todas findBiewById
llamadas a 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 Custom Toast. En este momento, no querrá crear una Actividad solo para estos pequeños componentes de la interfaz de usuario, esa vez que necesita programar una referencia programática a su archivo de diseño, para que pueda ejecutar findViewById en él.
Infla, sopla el diseño como un globo y te da el globo para que observes a su alrededor todos los colores y objetos dibujados en él :). Inflar le da la referencia de objeto a ese diseño para llamar a findViewById.
Espero que esto se aclare.
¿Qué es Layoutinflater?
LayoutInflater
es una clase (contenedor de alguna implementación o servicio), puede obtener una:
LayoutInflater li = LayoutInflater.from(context);
¿Cómo usar Layoutinflater?
Lo alimentas con un archivo de diseño XML. No es necesario que proporcione la dirección completa del archivo, solo su ID de recurso, generada automáticamente en la clase R
Por ejemplo, un archivo de diseño que se parece a:
<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?
Esa v
ahora es un objeto LinearLayout
( LinearLayout
extiende la View
) y contiene un objeto TextView
, organizado en el orden exacto y con todas las propiedades establecidas, 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 a partir de ese XML.
Algunos conceptos básicos para LayoutInflater-
- LayoutInflater se utiliza para manipular la pantalla de Android utilizando diseños XML predefinidos.
Esta clase se utiliza para crear una instancia del archivo XML de diseño en sus objetos de vista correspondientes.
Nunca se utiliza directamente. En lugar,
- use
getLayoutInflater()
ogetSystemService(String)
para recuperar una instancia estándar de LayoutInflater que ya esté conectada al contexto actual.