Sometimes in AlertDialog, there is a need to get input from the user or customize it according to our requirements. So we create custom AlertDialogs. This post will show how to customize the AlertDialogs and take input from it.
Below is the step-by-step implementation of the above approach:
Step 1: Create an XML file custom_layout.xml
Add the below code in custom_layout.xml. This code defines the alert dialog box dimensions and adds an edit text to it.
XML
<?xml version="1.0" encoding="utf-8"?>    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingLeft="20dp"    android:paddingRight="20dp">      <EditText        android:id="@+id/editText"        android:layout_width="match_parent"        android:layout_height="wrap_content" /></LinearLayout> |
Step 2: Add a Button in activity_main.xml
The button when clicked will show the AlertDialog box.Â
XML
<?xml version="1.0" encoding="utf-8"?>    android:id="@+id/root"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    android:orientation="vertical"    tools:context=".MainActivity">      <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="showAlertDialogButtonClicked"        android:text="Show Dialog" /></LinearLayout> |
Step 3: Add custom_layout.xml file
Add custom_layout.xml in that activity in which you want to show a custom alert dialog here it is added in MainActivity.
Java
import android.os.Bundle;import android.view.View;import android.widget.EditText;import androidx.appcompat.app.AlertDialog;import androidx.appcompat.app.AppCompatActivity;  public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }      public void showAlertDialogButtonClicked(View view) {        // Create an alert builder        AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setTitle("Name");          // set the custom layout        final View customLayout = getLayoutInflater().inflate(R.layout.custom_layout, null);        builder.setView(customLayout);          // add a button        builder.setPositiveButton("OK", (dialog, which) -> {            // send data from the AlertDialog to the Activity            EditText editText = customLayout.findViewById(R.id.editText);            sendDialogDataToActivity(editText.getText().toString());        });        // create and show the alert dialog        AlertDialog dialog = builder.create();        dialog.show();    }      // Do something with the data coming from the AlertDialog    private void sendDialogDataToActivity(String data) {        Toast.makeText(this, data, Toast.LENGTH_SHORT).show();    }} |
Kotlin
import android.content.DialogInterfaceimport android.os.Bundleimport android.view.Viewimport android.widget.EditTextimport android.widget.Toastimport androidx.appcompat.app.AlertDialogimport androidx.appcompat.app.AppCompatActivity  class MainActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)    }      fun showAlertDialogButtonClicked() {        // Create an alert builder        val builder = AlertDialog.Builder(this)        builder.setTitle("Name")          // set the custom layout        val customLayout: View = layoutInflater.inflate(R.layout.custom_layout, null)        builder.setView(customLayout)          // add a button        builder.setPositiveButton("OK") { dialog: DialogInterface?, which: Int ->            // send data from the AlertDialog to the Activity            val editText = customLayout.findViewById<EditText>(R.id.editText)            sendDialogDataToActivity(editText.text.toString())        }        // create and show the alert dialog        val dialog = builder.create()        dialog.show()    }      // Do something with the data coming from the AlertDialog    private fun sendDialogDataToActivity(data: String) {        Toast.makeText(this, data, Toast.LENGTH_SHORT).show()    }} |

