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 según 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.
android
android-layout
layout-inflater
android-inflate
Michal Dymel
fuente
fuente
Inflas un recurso XML. Ver el documento LayoutInflater .
Si su diseño está en mylayout.xml , haría algo como:
fuente
Aunque es una respuesta tardía, pero me gustaría agregar esa única forma de obtener esto
donde
item
está el diseño primario donde desea agregar un diseño secundario.fuente
R
recursos como referencias a un objeto, son soloint
s. Debe usarfindViewById
pasarle elR
recurso, luego escribir emitirlo al objeto deseado. Luego puede usarlo en llamadas a funciones comoinflate
. (es decirViewGroup item = (ViewGroup) findViewById(R.layout.activity_layout);
... entonces puedes usaritem
como arriba.)RelativeLayout
lugar deViewGroup
allí en mi ejemplo anterior, ya que no puede crear una instancia de la clase baseViewGroup
. La regla de edición de 5 minutos me consiguió. lolEs útil agregar a esto, aunque sea una publicación anterior, que si la vista secundaria que se está inflando desde xml se va a agregar a un diseño de grupo de vista, debe llamar a inflar con una pista de qué tipo de grupo de vista va a ir para ser agregado a. Me gusta:
El método de inflado está bastante sobrecargado y describe esta parte del uso en los documentos. Tuve un problema en el que una sola vista inflada desde xml no se alineaba correctamente en el padre hasta que hice este tipo de cambio.
fuente
Aún más simple es usar
fuente
View.inflate()
es la mejor manera, sin innecesariaLayoutInflater
ogetSystemService(Context.LAYOUT_INFLATER_SERVICE)
o cualquiera de todo lo que molestia! : Dinflación de diseño
fuente
Si no está en una actividad, puede usar el
from()
método estático de laLayoutInflater
clase para obtener unLayoutInflater
, o solicitar el servicio también del método de contextogetSystemService()
:(Sé que hace casi 4 años, pero aún vale la pena mencionarlo)
fuente
Si desea agregar una sola vista varias veces, entonces debe usar
Si te gusta
y
entonces arrojará la excepción de toda la vista lista agregada.
fuente
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 altura de diseño establecidos para emparejar_parente.
En este botón, haga clic en Evento. Podemos establecer el siguiente código para inflar el diseño en esta actividad.
Espero que esta solución funcione para ti.
fuente
Prueba este código:
fuente
Tuve el momento más difícil con este error, debido a mis circunstancias únicas, pero finalmente encontré una solución.
Mi situación: estoy usando una vista separada (XML) que contiene una
WebView
, luego se abre en unaAlertDialog
cuando hago clic en un botón en mi vista de actividad principal. Pero de una forma u otraWebView
pertenecía a la vista de actividad principal (probablemente porque saqué el recurso de aquí), así que justo antes de asignarlo a miAlertDialog
(como una vista), tuve que obtener el padre de miWebView
, ponerlo en unViewGroup
, luego elimine todas las vistas sobre esoViewGroup
. Esto funcionó y mi error desapareció.... más tarde, después de cargar mi
WebView
...fuente
Si está intentando adjuntar una vista secundaria a RelativeLayout? puedes hacer siguiendo
fuente
Con Kotlin, puedes usar:
fuente
Había usado el siguiente fragmento de código para esto y funcionó para mí.
fuente