首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免PopupWindow抢占焦点

避免PopupWindow抢占焦点
EN

Stack Overflow用户
提问于 2012-04-27 15:24:23
回答 1查看 2.9K关注 0票数 5

我有一个在每次按键时更新PopupWindow的EditText。如果我用.setFocusable(true)创建PopupWIndow,它就会抓住焦点,我就不能继续输入了。但是,如果我使用.setFocusable(false),PopupWindow中的ListView不会触发OnItemClickedListener。

有没有可能在不抓住焦点的情况下创建一个PopupWindow,但仍然可以点击其中的小部件?

( PopupWidow不是用于自动完成的,所以我不认为AutoCompleteTextView是我所需要的)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-11 01:11:59

我想你可以使用ListPopupWindow。它会为你处理一些焦点问题。这是一个非常简单的代码。它仍然需要添加更多的监听器来满足您的需求。但它解决了焦点问题。

代码语言:javascript
复制
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();
        }
    }
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10346452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档