¿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?
- ¿Cómo animar la imagen a través del diseño en android?
- ScrollView dos ediciones de edición de EditTexts
- GridView o TableLayout?
- Tamaño del texto del hilandero Android
- ¿Cómo obtener la referencia attr en el código?
- Cómo hacer un indicador de página para reciclaje horizontal
- Cambiar el estilo de ListPreference
- Usar la etiqueta <include> con? Attr / myAttr
- ¿El android: scaleType = "fitCenter" sólo funciona con los atributos fix Layout_width y Layout_height?
- Edición de diseño de Android: tabla / cuadrícula / lineal
- Android - ajustar scrollview cuando el teclado está para Android 5.0 (piruleta)
- Cambiar el color de fondo del elemento seleccionado en un ListView
- Cambiar el color de fondo de la flecha giratoria
¿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()
ogetSystemService(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
.
- La actualización de Eclipse ADT no funciona
- Cómo combinar OnClickListener y OnTouchListener para un ImageButton