2013-03-27 62 views
4

我使用TextWatcher更改按下的鍵值。我的目標是在打字時替換一些字符。例如當我鍵入鍵時,如果達到「S」字符,用「a」字符替換它。我的問題是:我應該在beforeTextChanged嗎?怎麼樣?任何人都可以給我一個例子嗎?替換TextWatcher中的字符android

+0

嘗試使用'afterTextChanged'代替beforeTextChanged'的'在EditText上 – 2013-03-27 07:36:22

+0

替換字符我試圖做到這一點,但我不能得到我想要的。你可以給我一個例子嗎? – Fcoder 2013-03-27 07:37:36

+0

PLZ解釋更多如果你正在使用afterTextChanged和你想獲得更多幫助,你會得到什麼 – 2013-03-27 07:40:10

回答

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); 
     } 
    } 

我加了一些的toString()的,不是100%肯定我是如何工作的編輯,但認爲應該覆蓋它。

-1
@Override 
public void afterTextChanged(Editable arg0) { 
    Editable ab = new SpannableStringBuilder(arg0.toString().replace("S", "a")); 
    arg0 = ab ; 
} 
+0

重新分配本地變量對原始可編輯值沒有任何影響! – user2878850 2017-09-19 19:08:23

7

我知道這個帖子是一對夫婦歲,但兩個版本並沒有爲我工作,具有建設兩個答案之間的混合體。

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