跳转至

Android EditText动态限制输入,检查输入回车

本文介绍TextWatcher的具体使用案例。

代码中动态限制输入长度

使用TextWatcher

mQueryEt.addTextChangedListener(new TextWatcher() {
    @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) {
        // 如果EditText中的数据不为空,且长度大于指定的最大长度
        if (!TextUtils.isEmpty(s) && s.length() > 15) {
            // 删除指定长度之后的数据
            s.delete(15, s.length() - 1);
        }
    }
});

EditText检查输入回车

不给输入空格或者回车。前面输入字符后,检测到回车则发起搜索。

并且用InputMethodManager关闭键盘

mBinding.searchEt.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // 忽略
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
//                Log.i(TAG, "onTextChanged:   " + s);
    }

    @Override
    public void afterTextChanged(Editable s) {
        String input = s.toString();
        if (" ".equals(input) || "\n".equals(input)) {
            mBinding.searchEt.setText("");
            return;
        }
        if (TextUtils.isEmpty(input.trim())) {
            mBinding.clearInputIv.setVisibility(View.INVISIBLE);
        } else {
            mBinding.clearInputIv.setVisibility(View.VISIBLE);
            String last = input.substring(input.length() - 1, input.length());
            if ("\n".equals(last)) {
                input = input.trim();
                mBinding.searchEt.setText(input);
                mBinding.searchEt.setSelection(input.length());

                // 业务代码 例如发起搜索
                // reqSearch(input); 
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(mBinding.searchEt.getWindowToken(), 0);
            }
        }
    }
});
本站说明

一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~

📖AndroidTutorial 📚AndroidTutorial 🙋反馈问题 🔥最近更新 🍪投喂作者

Ads