2012-04-27 15 views
4

私は各キー押しでPopupWindowを更新するEditTextを持っています。 .setFocusable(true)を指定してPopupWIndowを作成すると、フォーカスが取得され、入力を続行できなくなります。ただし、.setFocusable(false)を使用すると、PopupWindow内のListViewはOnItemClickedListenerをトリガーしません。PopupWindowのフォーカスを避ける

フォーカスを取得せずにPopupWindowを作成することは可能ですが、その中にウィジェットをクリック可能にしますか?

(PopupWidowは、オートコンプリートのためではないので、私はAutoCompleteTextViewは私が必要なものだとは思わない)

答えて

2

私はあなたがListPopupWindowを使用することができますね。それはあなたのためのいくつかの焦点の問題を処理します。ここには非常に単純なコードがあります。あなたのニーズに合ったリスナを追加する必要があります。しかし、焦点の問題を明らかにする。

ListPopupWindow popup; 
EditText editText; 
String[] strAry = {"a", "2", "3", "4", "5", "6", "7", "8", "9"}; 

editText=(EditText)this.findViewById(R.id.editText); 
popup= new ListPopupWindow(this.getApplicationContext()); 
popup.setAdapter(new ArrayAdapter(this,android.R.layout.simple_expandable_list_item_1,strAry)); 
popup.setAnchorView(editText); 
popup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED); 

editText.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View eventView) { 
     if(!popup.isShowing()){ 
      popup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED); 
      popup.show(); 
     } 
    } 
}); 
editText.addTextChangedListener(new s(){ 
    @Override 
    public void afterTextChanged(Editable arg0) {} 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
     int arg3) {} 
    @Override 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     if(!popup.isShowing()){ 
      popup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED); 
      popup.postShow(); 
     } 
    } 
}); 
+0

私はPopupWindowを使用しています。PopupWindowを使用している場合でも同じ問題が発生します。シェアしてください。 –