PopupWindows与外部输入框焦点问题

一个很常见的场景,模糊查询的时候会在输入框下面弹出一个窗体让用户进行选择,这种实现方法有很多我要说的就是使用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);

    }

猜你喜欢

转载自blog.csdn.net/a598068693/article/details/76460502