Проблема всплывающего окна Android

Вот моя проблема. У меня есть PopupWindow, который будет отображаться при нажатии кнопки. Я добавил setOutsideTouchable(true), поэтому, когда пользователь щелкает за пределами PopupWindow, PopupWindow будет закрыт.

Теперь дело в том, что когда мое всплывающее окно отображается, и я нажимаю кнопку, оно отклоняет мое всплывающее окно и показывает его снова (что на самом деле должно делать, это просто закрывать всплывающее окно). Он закрыл мое всплывающее окно, потому что нажатие на кнопку считается снаружи (setOutsideTouchable(true)), затем оно снова отображается, потому что мой код onclick сообщил об этом.

В любом случае, я могу включить свою кнопку в пределах PopupWindow, чтобы при нажатии она не отклонялась?

Большое спасибо. Цените помощь. }


person villager    schedule 04.09.2012    source источник


Ответы (1)


декларации

private LayoutInflater inflater;
private PopupWindow pw;
private View popupView

в методе oncreate

inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
popupView = inflater.inflate(R.layout.menu_layout, null, false);

метод onclick для кнопки

public void showPopup(View view) {
    pw = new PopupWindow(getApplicationContext());
    pw.setTouchable(true);
    pw.setFocusable(true);
    pw.setOutsideTouchable(true);
    pw.setTouchInterceptor(new OnTouchListener() {
       public boolean onTouch(View v, MotionEvent event) {
           if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                pw.dismiss();

                return true;
            }

            return false;
        }
    });

    pw.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
    pw.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    pw.setOutsideTouchable(false);
    pw.setContentView(popupView);
    pw.showAsDropDown(view, 0, 0);

}

Это код, который я использую для реализации того же самого.

МОЖНО НАЙТИ ПРИМЕР КОДА ЗДЕСЬ

person darsh    schedule 04.09.2012
comment
Вы не против принять ответ, если он помог? В противном случае дайте мне знать, если проблема не исчезнет. - person darsh; 05.09.2012