在Android中的EditText中更改用户输入的字符

时间:2013-03-26 13:47:47

标签: java android android-edittext android-softkeyboard

我想在EditText中更改用户输入的字符。实际上我想要当用户输入编辑文本时,如果输入字符是“S”,则将其替换为“B”字符。我想要实时做这件事。

3 个答案:

答案 0 :(得分:7)

  

我想在EditText中更改用户输入的字符。事实上我想要   当用户键入编辑文本时,如果输入字符为“S”,则替换它   具有“B”字符。我想要实时做这件事。

您很可能需要使用它为您的目标指定的TextWatcher,并允许您实时操作EditText的内容。

示例:

edittext.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before, int count) {           

    }

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

    }

    public void afterTextChanged(Editable s) {

    }
});

答案 1 :(得分:1)

像Sajmon解释的那样,你必须实现一个TextWatcher。你必须小心光标。因为用户可以在现有文本字符串中的任何位置输入下一个字符(或剪贴板中的序列)。要处理此问题,您必须在正确的位置更改字符(不要替换整个文本):

        damageEditLongText.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) {
            // Nothing to replace
            if (s.length() == 0)
                return;

            // Replace 'S' by 'B'
            String text = s.toString();
            if (Pattern.matches(".*S.*", text)) {
                int pos = text.indexOf("S");
                s.replace(pos, pos + 1, "B");
            }
        }
    });

答案 2 :(得分:0)

使用

EditText textField = findViewById(R.id.textField);
String text = textField.getText().toString();

然后你可以使用

text.replace('b','s');

接着是

textField.setText(text,TextView.BufferType);

TextView.BufferType可以有3个值here