Я надеялся получить ответ на свой вопрос, который у меня есть на данный момент.
У меня есть класс, который расширяет всплывающее окно. Он отлично работает, за исключением того, что я не хочу, чтобы окно отклонялось, когда я нажимаю кнопку за окном.
На данный момент я setOutsideTouchable(false);
Но это просто останавливает события за окном, оно все равно отклоняет всплывающее окно.
Диалог имеет setCanceledOnTouchOutside(false)
, есть ли что-то подобное, которое я могу использовать?
благодаря
Хорошо, так исправлено в конце.
Сначала был сделан основной макет, который всплывает по относительной компоновке. Затем поместил полный экран пустой макет сверху, который я сделал невидимым и прозрачным.
Затем покажите, когда отображается всплывающее окно, установите полноэкранную панель с помощью функции setVisibility(View.VISIBLE);
И скрыть, когда всплывающее окно скрыто с помощью setVisibility(View.GONE);
Также необходимо вернуть true из прослушивателя касания для макета с помощью (Чтобы остановить события касания, возвращающиеся к основному макету):
blocker.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return true; } });
И дайте всплывающему окну свойства:
setTouchable(true); setOutsideTouchable(false);
ура
Для чего вы используете этот PopupWindow
? Похоже, вы используете его в Dialog
режиме.
При этом вам, вероятно, придется изучить использование setTouchInterceptor
а затем создать собственный OnTouchListener
который вы будете использовать, чтобы проверить, где было выполнено касание (в Popup или нет).