替换android中TextWatcher中的字符

Fco*_*der 5 java android textwatcher

我使用TextWatcher来更改按下的键值.我的目标是在打字时更换一些字符.例如,当我键入键时,如果达到"S"字符,则将其替换为"a"字符.我的问题是:我应该在beforeTextChanged吗?怎么样?谁能举个例子?

qua*_*pps 8

我知道这篇文章已经有几年了,但是这两个版本对我来说都不起作用,并且在两个答案之间建立了一个混合体.

@Override
public void afterTextChanged(Editable editable) {    
    if (editable.toString().contains(",")) {
       Editable ab = new SpannableStringBuilder(editable.toString().replace(",", ""));
       editable.replace(0, editable.length(), ab);
    }
}
Run Code Online (Sandbox Code Playgroud)


RyP*_*ope 1

使用 beforeTextChanged 没有用,因为它不会中断 EditText 键的实际打印。我会使用类似的东西:

    public void afterTextChanged(Editable s) {
        if(s.length() > 0 && s.toString().charAt(s.length()-1) == 'S')
        {
            final String newText = s.toString().substring(0, s.length()-1) + "a"; 
            editText.setText(newText); 
        }
    }
Run Code Online (Sandbox Code Playgroud)

我添加了一些 toString(),不是 100% 确定 Editable 是如何工作的,但我认为这应该涵盖它。