entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Cerrar un custom Dialog con dissmiss()

Que tal a todos, cree un Dialog personalizado y si me funciona, ahora, en la parte superior derecha tengo un ImageButton el cual lo quiero usar para cerrar el dialogo, pero no me funciona, les muestro que tengo:

final Dialog alertDialog = new Dialog(MainActivity.this);
        alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        alertDialog.setContentView(R.layout.ganador);

        alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        alertDialog.show();

        closedialog = (ImageButton) findViewById(R.id.closeDialog);
        closedialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });

Realmente estoy iniciando, quisiera que me digan como se realiza, o bien si saben alguna otra manera de hacer muchas gracias por su ayuda.

2 Respuestas

2votos

x4mp73r Puntos13390

Que onda @userTemp no es necesario que infles el layout, creo que la solución a tu problema puede ser ésta, así lo eh usado yo:

 private Dialog dialog; /*variable declarada en la clase*/

        dialog = new Dialog(tuActividad.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); /*Transparencia*/
        dialog.setContentView(R.layout.juego_mensaje);

/*Aquí lo sustituyes por lo que uses, en mi caso es ImageView*/
        ImageView cerrar = (ImageView) dialog.findViewById(R.id.cerrar);

        cerrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        ImageButton reiniciarJuego =(ImageButton) dialog.findViewById(R.id.close);
        reiniciarJuego.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                reset_game();
                dialog.dismiss();
            }
        });

        dialog.show();

    }

Con eso obtienes la transparencia y por supuesto el botón o ImageButton o lo que quieras que cierre tu dialogo.

0voto

userTemp comentado

Gracias @x4mp73r me funcionó

3votos

cobasESP Puntos19650

Antes de crear el alertdialog tienes que crear una vista e inflarla con un LayoutInflater, y despues al crear el closedialog, estas buscandolo en la misma view en la que creas el dialog, no en la propia view del dialog con lo cual deberias poner esto:

closedialog = (ImageButton) myview.findViewById(R.id.closeDialog);

poner myview (o como llames a la vista que cargas en setContentView()) tienes que hacer referencia a dicha vista creada anteriormente en el findview.

1voto

userTemp comentado

Que tal @cobasESP gracias por tomar tu tiempo, pues mira también lo cree tal cual dices, pero lo que quería era quitarle el fondo al Dialog:

 AlertDialog.Builder builder;
        Context mContext = MainActivity.this;
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.ganador,
                (ViewGroup) findViewById(R.id.root));
        ImageView close_dialog = (ImageView) layout.findViewById(R.id.imageView_custom_dialog_close);

        close_dialog.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                alertdialog.dismiss();

            }
        });

        builder = new AlertDialog.Builder(mContext);
        builder.setView(layout);
        alertdialog = builder.create();

        alertdialog.show();

De esta manera si me cierra el custom dialog, pero no encontraba la manera de hacerla transparente, incluso le cree un estilo en Style.xml
pero no me reconocía lo transparente, por eso usé el código de mi pregunta, no se si tienes alguna idea de como volverlo transparente?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta