У меня есть действие, которое использует стиль Theme.Dialog, так что это плавающее окно поверх другого действия. Однако когда я щелкаю за пределами диалогового окна (в фоновом режиме), диалоговое окно закрывается. Как я могу остановить это поведение?
229
Ответы:
Это может помочь вам. Это способ обработки внешнего события касания:
Как отменить диалоговое окно, например «Активность», при касании за пределами окна?
Поймав событие и ничего не делая, я думаю, вы можете предотвратить закрытие. Но что странно, так это то, что по умолчанию поведение вашего диалогового окна активности не должно закрываться, когда вы касаетесь снаружи.
(PS: код использует WindowManager.LayoutParams)
источник
Чтобы предотвратить закрытие диалогового окна при нажатии клавиши «Назад», используйте эту
И чтобы диалоговое окно не закрывалось от внешнего прикосновения, используйте это
источник
AlertDialog
закрытия стандарта на ощупь снаружи, и это то, что дает этот ответ.setCancelable(false)
На самом деле у вас есть действие (даже если оно выглядит как диалоговое окно), поэтому вам следует звонить
setFinishOnTouchOutside(false)
из своего действия, если вы хотите оставить его открытым при щелчке по фоновому действию.РЕДАКТИРОВАТЬ: Это работает только с Android API уровня 11 или выше
источник
onBackPressed()
ничего не делать в своем телеТо, что работало для меня, было создать
DialogFragment
набор, чтобы его нельзя было отменить:источник
При использовании диалога в качестве действия в onCreate добавьте это
источник
Для более высокого API 10 диалоговое окно исчезает при касании снаружи, тогда как в более низком, чем API 11, диалоговое окно не исчезает. Для предотвращения этого вам необходимо сделать:
В
styles.xml
:<item name="android:windowCloseOnTouchOutside">false</item>
ИЛИ
В
onCreate()
методе используйте:this.setFinishOnTouchOutside(false);
Примечание: для API 10 и ниже этот метод не имеет эффекта и не нужен.
источник
Достаточно установить для диалогового окна отменяемое значение false, и если вы дотронетесь до диалогового окна предупреждения или нажмете кнопку «Назад», диалоговое окно предупреждения исчезнет. Так что используйте это:
setCancelable(false)
И другая функция больше не нужна:
dialog.setCanceledOnTouchOutside(false);
Если вы создаете временный диалог и хотите добавить эту строку кода, вот пример:
источник
Используйте этот код, он работает для меня
источник
Посмотрите эту ссылку для более подробной информации о диалоге.
источник
Просто,
запретить пользователю нажимать за пределами диалогового окна.
источник
Alert Dialog устарела, поэтому используйте Dialog dialog = new Dialog (this);
Для предотвращения близкого при внешнем прикосновении
источник
Используйте
setFinishOnTouchOutside(false)
для API> 11 и не волнуйтесь, потому что его поведение по умолчанию для Android, когда диалог на тему активности не будет закончен при внешнем прикосновении к API <11 :) !! Cheerss !!источник
Я использую это в onCreate (), кажется, работает на любой версии Android; протестирован на 5.0 и 4.4.x, не может тестироваться на Gingerbread, на устройствах Samsung (Note 1 с ГБ) по умолчанию:
источник
Я думаю, это поможет вам. Это сработало для меня
источник
Вот мое решение:
источник
Также можно назначить другое действие, реализующее onCancelListener:
источник
Я столкнулся с той же проблемой. Чтобы справиться с этим, я установил
OntouchListener
в диалоге и ничего не делать внутри. Но Диалог уволить при повороте экрана тоже. Чтобы исправить это, я установил переменную, чтобы сказать мне, если диалог обычно закрывается. Затем я устанавливаюOnDismissListener
свой диалог и внутри проверяю переменную. Если диалог обычно исчезает, я ничего не делаю, или я снова запускаю диалог (и устанавливаю его состояние, как при отклонении в моем случае).источник
builder.setCancelable (ложь);
public void Mensaje (View v) {
источник
Это идеальный ответ на все ваши вопросы .... Надеюсь, вам понравится кодирование в Android
источник