edittext与删除

本文介绍了一种在Android应用中实现EditText控件的焦点管理及输入内容控制的方法。当EditText获得焦点并输入非空内容时,显示清除按钮;失去焦点时,无论是否有内容,都隐藏清除按钮。此外,还实现了输入内容格式化功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果:

edittext
获取焦点, 且输入非空内容时,显示删除,
失去焦点 ,不管有没有内容,都不显示删除

代码如下:

        mEditText1.addTextChangedListener(this);
        mEditText2.addTextChangedListener(this);
        mEditText3.addTextChangedListener(this); 

        mEditText1.setOnFocusChangeListener(this);
        mEditText2.setOnFocusChangeListener(this);
        mEditText3.setOnFocusChangeListener(this);
  @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override  //内容改变时
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        mName = mEditText1.getText().toString().trim();
        if (mName.length() > 0 && mEditText1.isFocused()) {
            mClear1Iv.setVisibility(View.VISIBLE);
        } else {
            mClear1Iv.setVisibility(View.GONE);
        }

        mIdCard = mEditText2.getText().toString().trim();
        if (mIdCard.length() > 0 && mEditText2.isFocused()) {
            mClear2Iv.setVisibility(View.VISIBLE);
        } else {
            mClear2Iv.setVisibility(View.GONE);
        }

        mBackNo = mEditText3.getText().toString().trim();
        if (mBackNo.length() > 0 && mEditText3.isFocused()) {
            mClear3Iv.setVisibility(View.VISIBLE);
        } else {
            mClear3Iv.setVisibility(View.GONE);
        }
    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public void afterTextChanged(Editable s) {
        mName = mEditText1.getText().toString().trim();
        mIdCard = mEditText2.getText().toString().trim();
        mBackNo = mEditText3.getText().toString().trim();
        if (mName.length() > 0 && mIdCard.length() > 0 && mBackNo.length() > 0) {
            mBtnCommit.setBackground(getResources().getDrawable(R.drawable.bg_btn_enabled));
            mBtnCommit.setEnabled(true);
        } else {
            mBtnCommit.setBackground(getResources().getDrawable(R.drawable.bg_btn_disabled));
            mBtnCommit.setEnabled(false);
        }

        String str = mBackNo.replace(" ", "");//每隔四位显示一个空格
        String result = "";
        if (str.length() >= 4) {
            mEditText3.removeTextChangedListener(this);
            for (int i = 0; i < str.length(); i++) {
                result += str.charAt(i);
                if ((i + 1) % 4 == 0) {
                    result += " ";
                }
            }
            if (result.endsWith(" ")) {
                result = result.substring(0, result.length() - 1);
            }
            mEditText3.setText(result);
            mEditText3.addTextChangedListener(this);
            mEditText3.setSelection(mEditText3.getText().toString().length());//焦点到输入框最后位置
        }
    }

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            mName = mEditText1.getText().toString().trim();
            mIdCard = mEditText2.getText().toString().trim();
            mBackNo = mEditText3.getText().toString().trim();
            if (mEditText1.isFocused()) {//判断谁获取焦点
                if (!TextUtils.isEmpty(mName)) {
                    mClear1Iv.setVisibility(View.VISIBLE);
                }
                mClear2Iv.setVisibility(View.GONE);
                mClear3Iv.setVisibility(View.GONE);
            } else if (mEditText2.isFocused()) {
                if (!TextUtils.isEmpty(mIdCard)) {
                    mClear2Iv.setVisibility(View.VISIBLE);
                }
                mClear1Iv.setVisibility(View.GONE);
                mClear3Iv.setVisibility(View.GONE);
            } else if (mEditText3.isFocused()) {
                if (!TextUtils.isEmpty(mBackNo)) {
                    mClear3Iv.setVisibility(View.VISIBLE);
                }
                mClear1Iv.setVisibility(View.GONE);
                mClear2Iv.setVisibility(View.GONE);
            }
        }
    }
   @Override
    public void onClick(View v) {
        switch (v.getId()) {

            case R.id.commit:
                mBtnCommit.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_btn_disabled));
                mBtnCommit.setEnabled(false);

                mEditText1.clearFocus();//提交时取消焦点,隐藏删除
                mEditText2.clearFocus();
                mEditText3.clearFocus();
                mClear1Iv.setVisibility(View.GONE);
                mClear2Iv.setVisibility(View.GONE);
                mClear3Iv.setVisibility(View.GONE);

                mName = mEditText1.getText().toString().trim();
                mIdCard = mEditText2.getText().toString().trim();
                mBackNo = mEditText3.getText().toString().trim().replace(" ", ""); 
                //删除空格

                if (TextUtils.isEmpty(mName)) {
                    ToastUtil.showToast("姓名不能为空");
                    return;
                }

                if (TextUtils.isEmpty(mIdCard)) {
                    ToastUtil.showToast("证件号码不能为空");
                    return;
                } else if (!TextUtils.isEmpty(mIdCard) && !IDCardUtil.isIDCard(mIdCard)) {
                    ToastUtil.showToast("请输入正确的身份证号码");
                    return;
                }

                if (TextUtils.isEmpty(mBackNo)) {
                    ToastUtil.showToast("银行卡号不能为空");
                    return;
                }

                Map<String, String> paramsMap = new HashMap<>();
                paramsMap.put("tranCode", "NETL01");
                paramsMap.put("name", mName);
                paramsMap.put("idNo", mIdCard);
                paramsMap.put("accNo", mBackNo);
                AsyncTaskUtil.doAsync(Constant.APP_PINGAN, paramsMap, new AsyncCallBack() {
                    @Override
                    public void onPostExecute(String response) {

                    }
                });

                break;

        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值