Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Inflar diseño de forma programática en otro diseño

Necesito ayuda con mi aplicación para Android. Necesito inflar un diseño dentro de otro diseño y no sé cómo lo hago. Mi código xml es el siguiente:

  • Item.xml – Necesito inflar múltiples xml (dependiendo de un número variable)

    <RelativeLayout android:id="@+id/cartel_N1" android:layout_width="150dp" android:layout_height="match_parent" android:background="@color/tabhost_background_pressed" android:layout_marginRight="22dp" android:orientation="vertical" > <ImageView android:id="@+id/img_N1" android:layout_width="120dp" android:layout_height="120dp" android:layout_marginLeft="15dp" android:layout_marginTop="15dp" android:layout_marginRight="15dp" android:src="@drawable/mcdonalds_icon" /> <TextView android:id="@+id/title_N1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="McDonals del CC Alcampo" android:layout_marginBottom="10dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:textSize="15sp" /> <TextView android:id="@+id/categoria_N1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="CATEGORIA" android:textSize="16sp" android:textStyle="bold" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" /> <RelativeLayout android:id="@+id/stars_and_distance_N1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/stars_N1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/stars_25" android:layout_marginLeft="15dp" android:layout_marginTop="7dp" /> <TextView android:id="@+id/distance_N1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="200m" android:textSize="12sp" android:layout_alignParentRight="true" android:layout_marginRight="15dp" android:gravity="center_vertical" android:layout_marginTop="3dp" /> <ImageView android:id="@+id/icon_pos_N1" android:layout_width="10dp" android:layout_height="10dp" android:src="@drawable/marker_distance" android:layout_toLeftOf="@id/distance_N1" android:layout_marginTop="7dp" /> </RelativeLayout><LinearLayout android:id="@+id/cartel_N1" android:layout_width="150dp" android:layout_height="match_parent" android:background="@color/tabhost_background_pressed" android:layout_marginRight="22dp" android:orientation="vertical" > <ImageView android:id="@+id/img_N1" android:layout_width="120dp" android:layout_height="120dp" android:layout_marginLeft="15dp" android:layout_marginTop="15dp" android:layout_marginRight="15dp" android:src="@drawable/mcdonalds_icon" /> <TextView android:id="@+id/title_N1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="McDonals del CC Alcampo" android:layout_marginBottom="10dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:textSize="15sp" /> <TextView android:id="@+id/categoria_N1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="CATEGORIA" android:textSize="16sp" android:textStyle="bold" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" /> <RelativeLayout android:id="@+id/stars_and_distance_N1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/stars_N1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/stars_25" android:layout_marginLeft="15dp" android:layout_marginTop="7dp" /> <TextView android:id="@+id/distance_N1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="200m" android:textSize="12sp" android:layout_alignParentRight="true" android:layout_marginRight="15dp" android:gravity="center_vertical" android:layout_marginTop="3dp" /> <ImageView android:id="@+id/icon_pos_N1" android:layout_width="10dp" android:layout_height="10dp" android:src="@drawable/marker_distance" android:layout_toLeftOf="@id/distance_N1" android:layout_marginTop="7dp" /> </RelativeLayout> 
  • Este es mi principal xml:

     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/container_destacado" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- Inflate multiple xml file here --> </LinearLayout> </ScrollView> 

  • Pregunta teórica: cargar el archivo XML-Layout externo en Android
  • Análisis de un XML HttpResponse
  • Android NDK r4 san-angeles problema
  • Cambio de Android Color de sombra de elevación de material
  • Cómo configurar la aplicación RecyclerView: layoutManager = "" de XML?
  • Android cómo hacer que resalte la vista cuando se hace clic?
  • Android - No se puede resolver el símbolo "R"
  • Ancho del elemento RecyclerView layout_width = "match_parent" no coincide con el padre
  • 5 Solutions collect form web for “Inflar diseño de forma programática en otro diseño”

    Usted podría usar algo como

      LayoutInflater inflater = LayoutInflater.from(context); View inflatedLayout= inflater.inflate(R.layout.yourLayout, null, false); containerDestacado.addView(inflatedLayout); 

    Puede implementar esto como a continuación:

     LayoutInflater linf; LinearLayout rr; linf = (LayoutInflater) getApplicationContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE); linf = LayoutInflater.from(activity.this); rr = (LinearLayout) findViewById(R.id.container_destacado); for (int i = 1; i < NoOfTimes; i++) { final View v = linf.inflate(R.layout.item, null); rr.addView(v); } 

    En algún punto usted debe tener acceso a su inflador dentro de su actividad, puede llamar con este código:

     LayoutInflater li = LayoutInflater.from(context); 

    Donde contexto es this o this.getActivity () si es un Fragmento. A continuación, infle tu layour con:

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

    A continuación, utilice addView (layout) en su container_destacado:

     View containerDestacado = li.inflate(R.layout.container_destacado, null, false); containerDestacado.addView(layout); 

    Espero eso ayude.

     ll = (LinearLayout) findViewById(R.id.container_destacado); // ll is the layout where your inflated layout will be added linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); int pos = 0; while (pos < noOfTimes) { View myView = linflater.inflate(R.layout.item, null); //here item is the the layout you want to inflate myView.setId(pos); /* You can change TextView text and ImageView images here eg TextView tv = (TextView)myView.findViewById(R.id.title_N1); tv.setText(pos); */ pos++; ll.addView(myView); } 

    Usted tiene el LinearLayout en el que desea inflar otros childs:

     LinearLayout container = (LinearLayout)parentView.findViewById(R.id.container_destacado); 

    Una vez que cargaste el item.xml con tu inflador, solo puedes usar

     container.addView(itemView); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.