2013-03-26 80 views
2

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

+0

你有什么尝试? – 2013-03-26 13:48:39

+0

您可以使用TextWatcher。 http://developer.android.com/reference/android/text/TextWatcher.html – Alex 2013-03-26 13:49:31

回答

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) { 

    } 
}); 
+0

你能给我一个真实的例子吗?身份证你说什么,但我不能得到我想要的。请使用 – Fcoder 2013-03-26 16:12:37

+0

@FarhadShirzad在google.com上使用textwatcher android例子。你可以开始[这里](http://www.android-ever.com/2012/06/android-edittext-textwatcher-example.html) – Sajmon 2013-03-26 16:23:47

+0

@FarhadShirzad那么如何?有用? – Sajmon 2013-03-26 18:40:39

0

使用

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

那么你可以使用之后

textField.setText(text,TextView.BufferType); 
text.replace('b','s'); 

TextView.BufferType可以有3个值表示here

0

像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"); 
      } 
     } 
    }); 
相关问题