Cómo crear un AlertDialog personalizado en Android

A veces, en AlertDialog , es necesario obtener información del usuario o personalizar de acuerdo con nuestros requisitos. Entonces creamos AlertDialogs personalizados. Esta publicación mostrará cómo personalizar los AlertDialogs y tomar la entrada de ellos.

A continuación se muestra la implementación paso a paso del enfoque anterior:

  • Paso 1: Cree un archivo XML: custom_layout.xml . Agregue el siguiente código en custom_layout.xml. Este código define las dimensiones del cuadro de diálogo de alerta y agrega un texto de edición en él.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      android:orientation="vertical"
      android:paddingLeft="20dp"
      android:paddingRight="20dp"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
      
      <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    </LinearLayout>
  • Paso 2: Agrega un botón en activity_main.xml . Cuando se hace clic en el botón, se mostrará el cuadro AlertDialog.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:id="@+id/root"
        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>
  • Paso 3:

    Agregue custom_layout.xml en esa actividad en la que desea mostrar el cuadro de diálogo de alerta personalizado aquí se agrega en MainActivity.java.

    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",
                    new DialogInterface.OnClickListener() {
      
                        @Override
                        public void onClick(
                            DialogInterface dialog,
                            int 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();
        }
    }

Producción:

Publicación traducida automáticamente

Artículo escrito por shad0w1947 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *