PopupWindow, событие отправки ключа - PullRequest
1 голос
/ 01 марта 2012

Как отправить ключевые события из всплывающего окна PopupWindow в базовое действие. Если я установлю окно как фокусируемое, оно потребляет все события. Я хочу иметь возможность перехватить ключ и обрабатывать событие.

Вот моя дилемма: Мое PopupWindow содержит EditText, чтобы отобразить клавиатуру поверх окна, я вынужден установить фокус на окне. Проблема, из-за фокуса, заключается в том, что я не могу перехватить ключевое событие, в данном случае кнопку меню, чтобы закрыть окно.

1 Ответ

1 голос
/ 01 марта 2012

Вы можете обработать событие только в сфокусированном виде.

Вы можете попробовать использовать мой CustomPopUp.

Вот как это работает: если вы нажмете на EditText, наберите что-нибудь, затем откройте CustomPopUp и продолжите вводить текст, набрав EditText.Таким образом, даже когда вы открываете CustomPopUp, предыдущее представление сфокусировано.

public class CustomPopUp extends PopupWindow
{

    private final View.OnTouchListener customPopUpTouchListenr = new View.OnTouchListener()
    {

        @Override
        public boolean onTouch(final View v, final MotionEvent event)
        {

            return false;
        }
    };

    public CustomPopUp(final View theView)
    {
        super(theView);

        initView();

        setTouchInterceptor(customPopUpTouchListenr);

    }

    private void initView()
    {
        setWidth(LayoutParams.WRAP_CONTENT);
        setHeight(LayoutParams.WRAP_CONTENT);

        setTouchable(true);
        setOutsideTouchable(true);

        setBackgroundDrawable(new ColorDrawable());

    }

}
...