2012-02-07 10 views

Respuesta

3

Presumiblemente, desea detectar un evento táctil en cualquier lugar dentro de los límites de un cuadro de diálogo. Si está creando un cuadro de diálogo personalizado (es decir, ensamblando un conjunto de View en un diseño View de algún tipo, y luego estableciendo el principal View como vista del contenido principal del diálogo utilizando .setContentView()), entonces tal vez podría simplemente configurar un oyente onTouch ese contenido padre View. Además, podría obtener vistas mediante mDialog.findViewById(), por lo que si, por ejemplo, estuviera usando un AlertDialog, quizás podría determinar de alguna manera qué ID de recurso usar para agarrar su diseño principal View.

+0

Gracias. Me faltaba la parte del diálogo antes de findViewById 0_0 – Ahmed

0

Siempre puede crear su propia actividad Dialog y llamar a finish() cuando el usuario haga clic en el área que desea cerrar su Diálogo.

+0

Gracias por la respuesta. Pero quiero que el cuadro de diálogo pase el mouse sobre mi actividad actual (hay un área transparente encima y debajo del cuadro de diálogo desde el que se muestra mi actividad actual). PARA eloborar, el cuadro de diálogo se muestra cuando se hace clic en un botón de mi actividad. Puedo descartar el Diálogo tocando en la región fuera del Diálogo usando dialog.setCanceledOnTouchOutside (true); De acuerdo con los reks, no puedo usar ningún botón en el Diálogo! Por lo tanto, estoy tratando de buscar una forma de descartar el diálogo cuando se hace clic. – Ahmed

+0

Puede usar cualquier diseño que desee con una actividad; incluido uno que es transparente. Se verá como un cuadro de diálogo y puede hacer que se comporte de la forma que desee. Si realmente quieres algo que luzca y se comporte como un cuadro de diálogo modal pero con una lógica de descarte personalizada, funcionará. –

1

Si tiene un diseño en su cuadro de diálogo, puede obtener una referencia a eso como vista, y poner un onClickListener sobre eso. Entonces, suponiendo que su diálogo tiene un diseño personalizado y una vista para todo el diálogo, obtenga una referencia a eso.

Por ejemplo, suponiendo que un cuadro de diálogo tiene un LinearLayout llamado mainll, que contiene sus vistas personalizadas, lo haría:

LinearLayout ll - (LinearLayout) findViewById(R.id.mainll); 
ll.setOnClickListener(...) { onClick()... } 

A continuación, se hace clic en cualquier momento cualquier cosa dentro del LinearLayout, se registrará un evento de clic.

10

Anulación Dialog.onTouchEvent(...) captura cualquier toque, en cualquier lugar de la pantalla. Para cerrar el diálogo pulsando en cualquier lugar:

Dialog dialog = new Dialog(this) { 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
    // Tap anywhere to close dialog. 
    this.dismiss(); 
    return true; 
    } 
}; 

Este fragmento anula la necesidad de llamar dialogObject.setCanceledOnTouchOutside(true);.

0
here i have taken my close icon ,if u need u can take anything like button 

first of all u have implement to the class 

class somethingclass Dialog implements View.OnClickListener 

then set the event for particular 

     icon_close.setOnClickListener(this); 

then override the class function 

    @Override 
    public void onClick(View v) { 
     if(R.id.icon_close==v.getId()){ 
      dismiss(); 
     }else 
} 


Note: if passible u can give dilaog.dismiss(); 
Cuestiones relacionadas