Я хотел бы закрыть диалоговое окно в приложении для Android, просто коснувшись экрана.. это возможно? Если да, то как?
Я изучил настройку некоторого "onClickEven" в диалоговом окне, но он не существует.
Как это возможно?
Я хотел бы закрыть диалоговое окно в приложении для Android, просто коснувшись экрана.. это возможно? Если да, то как?
Я изучил настройку некоторого "onClickEven" в диалоговом окне, но он не существует.
Как это возможно?
Вы можете использовать dialog.setCanceledOnTouchOutside(true);
, который закроет диалог, если вы коснетесь u = вне диалогового окна.
Если ваше диалоговое окно содержит какое-либо представление, попытайтесь получить события касания в этом представлении и отпустите свое диалоговое окно, когда пользователь коснется этого вида. Например, если в вашем диалоговом окне есть изображение, то ваш код должен быть таким.
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.mylayout);
//create a layout with imageview
ImageView image = (ImageView) dialog.findViewById(R.id.image);
image.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
Dialog dialog = new Dialog(context)
{
public boolean dispatchTouchEvent(MotionEvent event)
{
dialog.dismiss();
return false;
}
};
И все готово!
Вы можете расширить класс Dialog
и переопределить метод dispatchTouchEvent()
.
EDIT. Также вы можете реализовать интерфейс Window.Callback
и установить его как обратный вызов диалогового окна с помощью dialog.getWindow().setCallback()
. Эта реализация должна вызывать соответствующие диалоговые методы или обрабатывать события по-своему.
Если кто-то все еще ищет решение об отказе от диалога Событие onTouch, вот фрагмент кода:
public void onClick(View v) {
AlertDialog dialog = new AlertDialog(MyActivity.this){
@Override
public boolean dispatchTouchEvent(MotionEvent event)
{
dismiss();
return false;
}
};
dialog.setIcon(R.drawable.MyIcon);
dialog.setTitle("MyTitle");
dialog.setMessage("MyMessage");
dialog.setCanceledOnTouchOutside(true);
dialog.show();
}