監聽EditText變化---TextWatcher 類用法詳解


結論來源是通過打Log來總結的。比較淺的來解釋 TextWatcher 類。
 
 1         TextWatcher textWatcher = new TextWatcher() {
 2             @Override
 3             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
 4                 //s--未改變之前的內容
 5                 //start--內容被改變的開始位置
 6                 //count--原始文字被刪除的個數
 7                 //after--新添加的內容的個數
 8                 //---------start和count結合從s中獲取被刪除的內容-------
 9                 String deleText = s.toString().substring(start, start + count);
10             }
11             @Override
12             public void onTextChanged(CharSequence s, int start, int before, int count) {
13                 //s--改變之后的新內容
14                 //start--內容被改變的開始位置
15                 //before--原始文字被刪除的個數
16                 //count--新添加的內容的個數
17                 //---------start和count結合從s中獲取新添加的內容-------
18                 String addText = s.toString().substring(start, start + count);
19             }
20             @Override
21             public void afterTextChanged(Editable s) {
22                 //s--最終內容
23             }
24         };
25         edit_content.addTextChangedListener(textWatcher);

 

 
需注意:
參數 CharSequence s的類型是SpannableStringBuilder,不要發生類型轉換異常這樣的錯誤
在SpannableStringBuilder類中, TextWatcher的3個方法是這樣被回調(下圖),其中
s位置傳入的內容是this(即SpannableStringBuilder類的當前實例)。
說明:TextWatcher 的3個方法中s參數指向的是同一片內存區域
 
SpannableStringBuilder部分源碼如下:
 
在SpannableStringBuilder類中的replace()方法中有對以上3個方法的調用
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM