TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count,int after) { LogUtils.e("FeedActivityaaaa111111111111","sA="+s+"startA="+start+"countA="+count+"afterA="+after); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { LogUtils.e("FeedActivityaaaa22222222222","sB="+s+"startB="+start+"beforeB="+before+"countB="+count); } @Override public void afterTextChanged(Editable s) { }
};
先前說明:
比如我再鍵盤上一下輸入三個字,然後點擊文本在EditText上一下多了三個字,這樣情況下count = 3,
如果輸入一個字一個字輸入count = 1;我將輸入數量定義爲 N;
在befroreTextChanged中:
start:輸入內容之前光標的位置,下標從0開始算起。
count:一次性輸入的文本的長度N,如果是輸入 count = 0;如果是刪除 count = N;
after:一次性輸入文本後的長度N,如果是輸入 after = N;如果是刪除 after = 0;
在onTextChanged中:
start:通beforeTextChange中的start;
count:同beforeTextChanged中的after;
before:同beforeTextChanged中count;
代數關係,分別令
beforeTextChanged中的變量爲
startA,countA,afterA
onTextChanged中的變量爲
startB,countB,beforeB
兩者的關係是
不論是輸入還是輸入都存在的關係:
startA == startB;
countA == beforeB;
afterA == countB;
只有在輸入的時候存在的關係:
countA + N = countB;