Diálogos en Android

Ventanas de diálogo en Android

Las ventanas de diálogo en Android son ventanas flotantes basadas en la clase Dialog y que permiten mostrar información o alguna indicación al usuario. A continuación un ejemplo de una ventana de diálogo básica.

VENTANA DE DIÁLOGO BÁSICA

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <Button
  7. android:id="@+id/boton"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:text="Mostrar"
  11. />
  12. </LinearLayout>

MainActivity.java

  1. package xip.midominio.com.dialogs;
  2. import android.app.Dialog;
  3. import android.support.v7.app.AlertDialog;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.view.View.OnClickListener;
  9. public class MainActivity extends AppCompatActivity implements OnClickListener{
  10. Button boton;
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15. boton=(Button) findViewById(R.id.boton);
  16. boton.setOnClickListener(this);
  17. }
  18. public void onClick(View v){
  19. showDialog(0);
  20. }
  21. protected Dialog onCreateDialog(int id){
  22. Dialog dialog = null;
  23. if(id==0){
  24. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  25. builder = builder.setIcon(R.drawable.ic_launcher_foreground);
  26. builder=builder.setTitle("Diálogo");
  27. dialog = builder.create();
  28. }
  29. return dialog;
  30. }
  31. }

VENTANA DE DIÁLOGO CON BOTONES

La ventana de diálogo con botones ofrece una interacción al usuario con posibilidad de hasta tres botones.

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:id="@+id/texto"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:text="texto de botón"
  11. />
  12. <Button
  13. android:id="@+id/boton"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:text="Mostrar"
  17. />
  18. </LinearLayout>

MainActivity.java

  1. package xip.midominio.com.dialogs;
  2. import android.app.Dialog;
  3. import android.content.DialogInterface;
  4. import android.support.v7.app.AlertDialog;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.view.View.OnClickListener;
  10. import android.widget.TextView;
  11. public class MainActivity extends AppCompatActivity implements OnClickListener{
  12. Button boton;
  13. TextView texto;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. texto = (TextView) findViewById(R.id.texto);
  19. boton=(Button) findViewById(R.id.boton);
  20. boton.setOnClickListener(this);
  21. }
  22. public void onClick(View v){
  23. showDialog(0);
  24. }
  25. protected Dialog onCreateDialog(int id){
  26. Dialog dialog = null;
  27. DialogoListener listener = new DialogoListener();
  28. if(id==0){
  29. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  30. builder = builder.setIcon(R.drawable.ic_launcher_foreground);
  31. builder=builder.setTitle("Diálogo con botones");
  32. builder=builder.setMessage("Selecciona botón");
  33. builder = builder.setPositiveButton("Afirmativo",listener);
  34. builder = builder.setNegativeButton("Negativo",listener);
  35. builder = builder.setNeutralButton("Neutral",listener);
  36. dialog = builder.create();
  37. }
  38. return dialog;
  39. }
  40. class DialogoListener implements DialogInterface.OnClickListener{
  41. @Override
  42. public void onClick(DialogInterface dialogInterface, int i) {
  43. if(i == DialogInterface.BUTTON_POSITIVE){
  44. texto.setText("Positivo");
  45. }
  46. if(i == DialogInterface.BUTTON_NEGATIVE){
  47. texto.setText("Negativo");
  48. }
  49. if(i == DialogInterface.BUTTON_NEUTRAL){
  50. texto.setText("Neutral");
  51. }
  52. }
  53. }
  54. }

VENTANA DE DIÁLOGO CON ELEMENTOS

Ventana de diálogo que permite integrar una lista de elementos y realizar una acción determinada al seleccionar cada uno de los elementos.

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:id="@+id/texto"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:text="Seleccionar elemento"
  11. />
  12. <Button
  13. android:id="@+id/boton"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:text="Mostrar"
  17. />
  18. </LinearLayout>

MainActivity.java

  1. package xip.midominio.com.dialogs;
  2. import android.app.Dialog;
  3. import android.content.DialogInterface;
  4. import android.support.v7.app.AlertDialog;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.view.View.OnClickListener;
  10. import android.widget.TextView;
  11. public class MainActivity extends AppCompatActivity implements OnClickListener{
  12. Button boton;
  13. TextView texto;
  14. CharSequence[] items={"Procesador","Monitor","Tarjeta de red","Impresora"};
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. texto = (TextView) findViewById(R.id.texto);
  20. boton=(Button) findViewById(R.id.boton);
  21. boton.setOnClickListener(this);
  22. }
  23. public void onClick(View v){
  24. showDialog(0);
  25. }
  26. protected Dialog onCreateDialog(int id){
  27. Dialog dialog = null;
  28. DialogoListener listener = new DialogoListener();
  29. if(id==0){
  30. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  31. builder = builder.setIcon(R.drawable.ic_launcher_foreground);
  32. builder=builder.setTitle("Diálogo con elementos");
  33. builder.setItems(items,listener);
  34. dialog = builder.create();
  35. }
  36. return dialog;
  37. }
  38. class DialogoListener implements DialogInterface.OnClickListener{
  39. @Override
  40. public void onClick(DialogInterface dialogInterface, int i) {
  41. texto.setText("Elemento "+i);
  42. }
  43. }
  44. }

DIÁLOGO CON ELEMENTOS Y CONFIRMACIÓN

Esta ventana es similar a la anterior pero requiere de un paso más de confirmación.

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:id="@+id/texto"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:text="Seleccionar elemento y confirmar"
  11. />
  12. <Button
  13. android:id="@+id/boton"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:text="Mostrar"
  17. />
  18. </LinearLayout>

MainActivity.java

  1. package xip.midominio.com.dialogs;
  2. import android.app.Dialog;
  3. import android.content.DialogInterface;
  4. import android.support.v7.app.AlertDialog;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.view.View.OnClickListener;
  10. import android.widget.TextView;
  11. public class MainActivity extends AppCompatActivity implements OnClickListener{
  12. Button boton;
  13. TextView texto;
  14. CharSequence[] items={"Procesador","Monitor","Tarjeta de red","Impresora"};
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. texto = (TextView) findViewById(R.id.texto);
  20. boton=(Button) findViewById(R.id.boton);
  21. boton.setOnClickListener(this);
  22. }
  23. public void onClick(View v){
  24. showDialog(0);
  25. }
  26. protected Dialog onCreateDialog(int id){
  27. Dialog dialog = null;
  28. DialogoListener listener = new DialogoListener();
  29. if(id==0){
  30. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  31. builder = builder.setIcon(R.drawable.ic_launcher_foreground);
  32. builder=builder.setTitle("Diálogo con elementos confirmados");
  33. builder.setSingleChoiceItems(items,0,listener);
  34. builder.setPositiveButton("OK",listener);
  35. builder.setNegativeButton("Cancelar",listener);
  36. dialog = builder.create();
  37. }
  38. return dialog;
  39. }
  40. class DialogoListener implements DialogInterface.OnClickListener{
  41. @Override
  42. public void onClick(DialogInterface dialogInterface, int i) {
  43. int it = 0;
  44. if(i >= 0){
  45. texto.setText("Item " + i);
  46. }
  47. if(i == DialogInterface.BUTTON_NEGATIVE){
  48. texto.setText("Opción cancelada" + i);
  49. }
  50. }
  51. }
  52. }

VENTANA DE DIÁLOGO CON MÚLTIPLES ELEMENTOS

Este tipo de ventana es similar a la anterior con la diferencia de que permite seleccionar varios elementos simultáneamente.

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:id="@+id/texto"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:text="texto de botón"
  11. />
  12. <Button
  13. android:id="@+id/boton"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:text="Mostrar"
  17. />
  18. </LinearLayout>

MainActivity.java

  1. package xip.midominio.com.dialogs;
  2. import android.app.Dialog;
  3. import android.content.DialogInterface;
  4. import android.support.v7.app.AlertDialog;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.view.View.OnClickListener;
  10. import android.widget.TextView;
  11. public class MainActivity extends AppCompatActivity implements OnClickListener{
  12. Button boton;
  13. TextView texto;
  14. CharSequence[] items={"Procesador","Monitor","Tarjeta de red","Impresora"};
  15. boolean[] seleccionados = new boolean [items.length];
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. texto = (TextView) findViewById(R.id.texto);
  21. boton=(Button) findViewById(R.id.boton);
  22. boton.setOnClickListener(this);
  23. }
  24. public void onClick(View v){
  25. showDialog(0);
  26. }
  27. protected Dialog onCreateDialog(int id){
  28. Dialog dialog = null;
  29. DialogoListener listener = new DialogoListener();
  30. MultipleListener multipleListener = new MultipleListener();
  31. if(id==0){
  32. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  33. builder = builder.setIcon(R.drawable.ic_launcher_foreground);
  34. builder=builder.setTitle("Diálogo con opciones");
  35. builder.setMultiChoiceItems(items,seleccionados,multipleListener);
  36. builder.setPositiveButton("OK",listener);
  37. builder.setNegativeButton("Cancelar",listener);
  38. dialog = builder.create();
  39. }
  40. return dialog;
  41. }
  42. class DialogoListener implements DialogInterface.OnClickListener{
  43. @Override
  44. public void onClick(DialogInterface dialogInterface, int i) {
  45. if(i >= DialogInterface.BUTTON_POSITIVE){
  46. texto.setText("Items ");
  47. for(int j = 0;j<seleccionados.length;j++){
  48. if(seleccionados[j]){
  49. texto.append("\n"+items[j]);
  50. }
  51. }
  52. }
  53. if(i == DialogInterface.BUTTON_NEGATIVE){
  54. texto.setText("Opción cancelada");
  55. }
  56. }
  57. }
  58. class MultipleListener implements DialogInterface.OnMultiChoiceClickListener{
  59. @Override
  60. public void onClick(DialogInterface dialogInterface, int i, boolean seleccionados) {
  61. }
  62. }
  63. }

VENTANA DE DIÁLOGO PERSONALIZADO

Este tipo de ventana de diálogo permite añadir los elementos de forma personalizada mediante un segundo layout y la clase onCreateDialog. Es el tipo de ventana de diálogo más compleja.

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <TextView
  7. android:id="@+id/texto"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:text="texto de botón"
  11. />
  12. <Button
  13. android:id="@+id/boton"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:text="Mostrar"
  17. />
  18. </LinearLayout>

dialogo.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:orientation="vertical">
  6. <TextView
  7. android:id="@+id/textoDial"
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:text="botón de diálogo"
  11. />
  12. <EditText
  13. android:id="@+id/campoDial"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content" />
  16. <Button
  17. android:id="@+id/botonDial"
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:text="botón de diálogo"/>
  21. </LinearLayout>

MainActivity.java

  1. package xip.midominio.com.dialogs;
  2. import android.app.Dialog;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.Window;
  7. import android.view.WindowManager;
  8. import android.widget.Button;
  9. import android.view.View.OnClickListener;
  10. import android.widget.EditText;
  11. import android.widget.TextView;
  12. public class MainActivity extends AppCompatActivity implements OnClickListener{
  13. TextView texto;
  14. Button boton;
  15. TextView textoD;
  16. EditText edittext;
  17. Button botonD;
  18. int id = 0;
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. texto = (TextView) findViewById(R.id.texto);
  24. boton=(Button) findViewById(R.id.boton);
  25. boton.setOnClickListener(this);
  26. }
  27. @Override
  28. public void onClick(View view) {
  29. showDialog(id);
  30. }
  31. protected Dialog onCreateDialog(int id){
  32. Dialog dialog = new Dialog(this);
  33. Window window = dialog.getWindow();
  34. int flag = WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
  35. window.setFlags(flag,flag);
  36. dialog.setTitle("Diálogo personalizado");
  37. dialog.setContentView(R.layout.dialogo);
  38. textoD = (TextView) dialog.findViewById(R.id.textoDial);
  39. edittext = (EditText) dialog.findViewById(R.id.campoDial);
  40. botonD = (Button) dialog.findViewById(R.id.botonDial);
  41. botonD.setOnClickListener(new Dialogo());
  42. return dialog;
  43. }
  44. class Dialogo implements OnClickListener{
  45. @Override
  46. public void onClick(View view) {
  47. texto.setText(edittext.getText().toString());
  48. dismissDialog(id);
  49. }
  50. }
  51. }


Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso