Android textwatcher监听文本框输入变化
textwatcher 包含三個接口,分別對應文本框輸入的三個狀態,分別是輸入前、輸入中、輸入完成。
1.改變前 beforeTextChanged
這個方法會在輸入前調用,有四個參數分別是
CharSequence s: editview中原來的內容
int start : 本次替換的起始位置
int count: 本次替換內容的長度
int after: 新替換內容的長度
注釋中說的很明白,這個方法被調用是用來通知你,原內容s從start位置開始的count個字符將為被長度為after的新內容替換,而不能在這個方法內改變s的內容。
2.改變中 onTextChanged
這個方法也有四個參數,和上一個方法不同的是把after換成來before,但別的參數的意思也有略微的改動。
CharSequence s: 代表替換后的內容。
int start:被替換的初始位置
int before:代表被替換內容的長度,對應上一個方法的count。
int count: 代表新內容的長度
這個方法是用來通知你,原本start位置后的before個字符已經被替換成count個新字符了。注意的是這個方法內同樣不能對s進行改變
3.改變后 afterTextChanged
這個方法只有一個參數。
Editable s 文本改變之后的內容
這個方法是用來通知你,之前s已經被修改了,在這個方法中你能夠對s進行改動,但是需要注意的是別陷入死循環,因為每次改動都會再次調用這個方法進行遞歸。這個方法沒有像之前的方法一樣有多個參數來告訴你它改動的位置和長度,是因為與此同時可能有別的afterTextChanged也改動了,就會使得原來的信息告訴你也沒用,因為很可能已經變化了。如果一定想要知道,可以在onTextChanged()中用setSpan()進行標志結束的位置。
需要的注意的是,此時雖然獲取到了新內容,但是還沒更新到UI上。
現在知道了這三個監聽方法,我們就可以根據業務進行自定義化的操作了。
總結
以上是生活随笔為你收集整理的Android textwatcher监听文本框输入变化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谢菲尔德遗传算法工具箱函数简介
- 下一篇: [js]JavaScript Numbe