art*_*urh 5 android popupwindow
我有一个EditText,它在每次按键时都会更新PopupWindow。如果我使用.setFocusable(true)创建PopupWIndow,那么它将抓住焦点,而我将无法继续输入。但是,如果我使用.setFocusable(false),则PopupWindow内的ListView不会触发OnItemClickedListener。
是否可以创建PopupWindow而不吸引焦点,但是仍然可以单击其中的小部件?
(PopupWidow不是用于自动完成的,所以我认为不需要AutoCompleteTextView)
我想你可以使用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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2520 次 |
| 最近记录: |