Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带TextWatcher的EditText.它应该将文本格式化为人类高度,如5’9“.但是当用户犯了错误并想删除输入错误的字符时,TextWather不允许他这样做.假设用户删除”characther the TextWather立即加回.下面是代码.那么如何允许用户删除EditText中的文本?
private class CustomTextWatcher implements TextWatcher {
    private EditText mEditText;

public CustomTextWatcher(EditText E) {
    mEditText = e;
}

public void beforeTextChanged(CharSequence s,int start,int count,int after) {
}

public void ontextChanged(CharSequence s,int before,int count) {


}

public void afterTextChanged(Editable s) {
    int count = s.length();
    String str = s.toString();
    if (count == 1) {
        str = str + "'";
    } else if (count == 3) {
        str = str + "\"";
    } else if ((count > 4) && (str.charAt(str.length() - 1) != '\"')) {
        str = str.subString(0,str.length() - 2)
                + str.charAt(str.length() - 1) + "\"";
    } else {
        return;
    }
    mEditText.setText(str);
    mEditText.setSELEction(mEditText.getText().length());


}

}

解决方法

忽略Karakuri发布的有关您的代码处于错误回调中的事实,您可以添加一个简单的修复程序,您只需要听取用户使用的密钥.

如果没有对现有代码进行任何实际测试或进一步改进,这似乎可以解决您描述的问题:

package com.example.testwatchertest;

import android.app.Activity;
import android.os.bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.onKeyListener;
import android.widget.EditText;

public class MainActivity extends Activity implements TextWatcher {

    EditText editText;
    Boolean keyDel = false;

    @Override
    protected void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.editText);
        editText.addTextChangedListener(this);

        editText.setOnKeyListener(new OnKeyListener() {

            @Override
            public Boolean onKey(View v,int keyCode,KeyEvent event) {

                if (keyCode == KeyEvent.KEYCODE_DEL){
                    keyDel = true;
                }else{
                    keyDel = false;
                }
                return false;
            }
        });

    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence s,int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void ontextChanged(CharSequence s,int count) {

        if (!keyDel) {

            String str = s.toString();
            if (count == 1) {
                str = str + "'";
            } else if (count == 3) {
                str = str + "\"";
            } else if ((count > 4) && (str.charAt(str.length() - 1) != '\"')) {
                str = str.subString(0,str.length() - 2) + str.charAt(str.length() - 1) + "\"";
            } else {
                return;
            }
            editText.setText(str);
            editText.setSELEction(editText.getText().length());

        }

    }

}

大佬总结

以上是大佬教程为你收集整理的android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它全部内容,希望文章能够帮你解决android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。