Всплывающее окно Android закрывается при нажатии за пределами - PullRequest
6 голосов
/ 02 декабря 2011

Я надеялся получить ответ на свою проблему, которая у меня есть в данный момент.

У меня есть класс, который расширяет всплывающее окно. Это работает хорошо, за исключением того, что я не хочу, чтобы окно закрывалось, когда я щелкаю за пределами окна.

На данный момент у меня есть setOutsideTouchable(false);, но это просто останавливает события за окном, оно все еще закрывает всплывающее окно.

В диалоге есть setCanceledOnTouchOutside(false), есть ли что-то похожее, что я могу использовать?

Спасибо

Ответы [ 2 ]

7 голосов
/ 06 декабря 2011

Хорошо, так что исправлено в конце.

Сначала сделал основной макет, который всплывающее окно сидит на относительном макете. Затем разместил полноэкранный пустой макет сверху, который я сделал невидимым и прозрачным.

Затем показать, когда отображается всплывающее окно, установить полноэкранную панель видимой с помощью 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);

Приветствия

0 голосов
/ 02 декабря 2011

Для чего вы используете это PopupWindow? Похоже, вы используете его более Dialog -ish.

При этом вам, вероятно, придется посмотреть, используя setTouchInterceptor, а затем создать свой собственный OnTouchListener, который вы будете использовать, чтобы проверить, где было выполнено касание ( во всплывающем окне или нет).

...