Android PopupWindow предотвращает исчезновение при клике на якорь

У меня есть всплывающее окно, которое показывает AsAsDropDown при нажатии кнопки, и это всплывающее окно имеет setOutsideTouchable(true), и я хочу, чтобы включить или отключить показ всплывающих окон, когда я нажимаю на мою кнопку, но и отключить, когда я нажимаю за пределами всплывающего окна. Проблема в том, что внешнее касание вызывается до нажатия кнопки, а мое всплывающее окно скрывается и отображается после этого. Есть способ сделать это?

ИСПРАВЛЕНО!!!

Я понял, что проблема была в том, что мое всплывающее окно не было сфокусировано, и мне нужно позвонить

popupWindow.setFocusable(true);

починить это.

1 ответ

Решение

Пожалуйста, проверьте это

Если я правильно понимаю,

// Pop up Window showing

    LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
            .getSystemService(LAYOUT_INFLATER_SERVICE);
    popupView = layoutInflater.inflate(R.layout.menu_popup, null);
    popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT);
    popupWindow.setOutsideTouchable(true);

 // Add setBackgroundDrawable to the pop up window to close the dialog :

        popupWindow.setBackgroundDrawable(getResources().getDrawable(
            android.R.color.transparent));
    popupWindow.setTouchable(true);

используя следующую проверку, вы можете показать всплывающее окно, как вы хотели

findViewById(R.id.topMenu).setOnClickListener(
            new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                        popupWindow
                                .showAsDropDown(findViewById(R.id.topMenu));

            });

Я проверил это. Работает нормально.

Другие вопросы по тегам