2012-03-01 2 views
1

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

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

ответ

1

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

Вы можете попробовать использовать мой 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()); 

    } 

} 
+0

Спасибо, в этом случае вид EditText находится внутри самого окна. Поэтому я должен сфокусировать окно inorder для отображения клавиатуры. – user634545

+0

Пожалуйста, отметьте как разрешено –

+0

Это не решило мою проблему, как я уже сказал, для всплывающего окна требуется фокус, чтобы edittext внутри всплывающего окна работал. Я решил проблему, взяв PopupWindow из источника Android и изменив метод отправки. – user634545

Смежные вопросы