这是一个略显笼统的答案,为以后的观众提供更多解释。
添加一个文本更改的侦听器
如果希望在文本更改后查找文本长度或执行其他操作,可以将文本更改侦听器添加到编辑文本中。
EditText editText = (EditText) findViewById(R.id.testEditText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
监听器需要一个TextWatcher,它需要覆盖三个方法:beforeTextChanged、onTextChanged和afterTextChanged。
数字符
你可以在onTextChanged或beforeTextChanged with中获取字符计数
charSequence.length()
或在afterTextChanged with
editable.length()
方法的意义
这些参数有点让人困惑所以这里有一点额外的解释。
beforeTextChanged
beforeTextChanged(CharSequence CharSequence, int start, int count, int after)
charSequence:这是挂起更改之前的文本内容。你不应该试图改变它。
start:这是新文本将要插入的位置的索引。如果选择了一个范围,那么它是范围的开始索引。
count:这是将要被替换的所选文本的长度。如果没有选择,则count将为0。
After:这是要插入的文本的长度。
onTextChanged
onTextChanged(CharSequence CharSequence, int开始,int之前,int计数)
charSequence:这是更改后的文本内容。您不应该尝试在这里修改这个值。如果需要,修改afterTextChanged中的可编辑文件。
start:这是插入新文本的起始位置的索引。
before:旧值。它是先前被替换的选定文本的长度。这与beforeTextChanged中的count值相同。
count:这是插入的文本长度。这与beforeTextChanged中的after值相同。
afterTextChanged
afterTextChanged(可编辑的编辑)
像onTextChanged一样,它在更改已经完成后被调用。但是,现在文本可能会被修改。
editable:这是EditText的可编辑文本。如果你改变它,你必须小心不要进入一个无限循环。有关详细信息,请参阅文档。
这个答案的补充图像