PopupWindows与外部输入框焦点问题

来源:互联网 发布:latex for mac下载 编辑:程序博客网 时间:2024/05/17 02:39

一个很常见的场景,模糊查询的时候会在输入框下面弹出一个窗体让用户进行选择,这种实现方法有很多我要说的就是使用PopupWindows的实现,以及遇到的问题。

  • 首先我们会使用edittext.addTextChangedListener来进行输入监听
@Override    public void beforeTextChanged(CharSequence s, int start, int count, int after) {    }    @Override    public void onTextChanged(CharSequence s, int start, int before, int count) {    }    @Override    public void afterTextChanged(Editable s) {        //移除消息        handler.removeCallbacksAndMessages(null);        //判断输入内容,根据不同场景,有不同的实现(比如输入空查询所有)        if (!TextUtils.isEmpty(s.toString())) {            handler.postDelayed(new Runnable() {                @Override                public void run() {               //300毫秒后没输入内容就加载窗体内容(一般进行网络请求一类的)               //显示窗体                    showPop(view);                }, 300);             }         }    }
  • 其次显示窗体需要的布局与内容
private void showPop(View view) {        //TODO: 显示的view        popupWindow.setContentView(view);        // TODO: 2016/5/17 设置背景颜色        popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));        //这一句代码至关重要,决定着弹出窗体后是否可以继续输入        popupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);        popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);        popupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);        popupWindow.showAsDropDown(editText, 0, 0);    }