这是一个稍微更一般的答案,对未来的观众有更多的解释。
添加文本更改的侦听器
如果要在文本更改后查找文本长度或执行其他操作,可以将文本更改的侦听器添加到编辑文本中。
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) {
}
});
监听器需要editable,这需要覆盖三种方法:editable,EditText和beforeTextChanged。
计算人物
您可以使用editable或EditText获取字符数
charSequence.length()
或者在editable中
editable.length()
方法的含义
参数有点令人困惑,所以这里有一点额外的解释。
beforeTextChanged
editable
editable:这是挂起更改之前的文本内容。 你不应该试图改变它。
editable:这是插入新文本的索引。 如果选择了范围,则它是范围的起始索引。
editable:这是要替换的所选文本的长度。 如果未选择任何内容,则EditText将为beforeTextChanged。
editable:这是要插入的文本的长度。
onTextChanged
editable
editable:这是更改后的文本内容。 您不应该尝试在此处修改此值。 如果需要,修改beforeTextChanged中的EditText。
editable:这是插入新文本的起始位置的索引。
editable:这是旧值。 它是已替换的先前所选文本的长度。 这与beforeTextChanged中的EditText的值相同。
editable:这是插入的文本长度。 这与beforeTextChanged中的EditText的值相同。
afterTextChanged
editable
与editable一样,在完成更改后调用此方法。 但是,现在可以修改文本。
editable:这是EditText的可编辑文本。但是,如果更改它,则必须注意不要进入无限循环。 有关详细信息,请参阅文档。
这个答案的补充图像