LayoutInflator which is instantiate a xml layout into respected View object. Which will takes xml file all elements and create a view for the screen. So in this layoutInflate example we will add other layout to main layout by inflating the view.
So let's create
Step 1: Create android application
Step 2: To inflate view inside the screen we will use the Inflator class.
val layoutInflater: LayoutInflater = LayoutInflater.from(applicationContext)
|
In the xml file we will add below widgets
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cedeca"
android:orientation="vertical"
android:padding="16dp"
>
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello Android!"
android:textSize="25sp"
android:layout_margin="25dp"
/>
</LinearLayout>
|
Step 3: Now let's create other layout which we will add inside main layout
child_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:padding="10dp"
>
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="350dp"
android:scaleType="center"
android:src="@drawable/bg"
/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_gravity="center"
android:padding="10dp"
/>
</LinearLayout>
|
Step 4: Now update MainActivity.kt
package com.rrtutors.kotlinexample2021
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var main_container=findViewById<LinearLayout>(R.id.main_container);
// Get the LayoutInflater from Context
val layoutInflater: LayoutInflater = LayoutInflater.from(applicationContext)
// Inflate the layout using LayoutInflater
val view: View = layoutInflater.inflate(
R.layout.child_layout, // Custom view/ layout
main_container, // Root layout to attach the view
false // Attach with root layout or not
)
// Find the text view from custom layout
val label = view.findViewById<TextView>(R.id.txt)
// Get the ImageView widget reference from custom view
val imageView = view.findViewById<ImageView>(R.id.image_view)
// Set the text of custom view's text view widget
label.text = "Andorid development"
// Finally, add the view/custom layout to the activity root layout
main_container.addView(view,0)
}
}
|
Step 5: Now run the application it will add second layout view to the main layout dynamically.