Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Inflate layout programmatically within another layout

I need help with my android app. I need inflate a layout within another layout and I dont know how I do. My xml code is this:

  • item.xml - I need inflate multiple xml (depending on a variable number)

        <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> 
  • This is my main 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> 
like image 815
Yeray Avatar asked Jan 28 '14 08:01

Yeray


People also ask

Why do we use the layout Inflater in listview?

Put simply, an inflater allows you to create a View from a resource layout file so that you do not need to create everything programmatically.


2 Answers

You could use something like

LayoutInflater inflater = LayoutInflater.from(context);  //to get the MainLayout View view = inflater.inflate(container_destacado, null); ... //Avoid pass null in the root it ignores spaces in the child layout  View inflatedLayout= inflater.inflate(R.layout.yourLayout, (ViewGroup) view, false); containerDestacado.addView(inflatedLayout); 
like image 159
Adam Radomski Avatar answered Sep 21 '22 08:09

Adam Radomski


You can implement this like below:

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); } 
like image 37
M D Avatar answered Sep 21 '22 08:09

M D