这是一个较为笼统的答案,并为以后的观众提供了更多解释。
添加文本更改的侦听器
如果要查找文本长度或在更改文本后执行其他操作,可以将文本更改后的侦听器添加到编辑文本中。
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
与
charSequence.length()
或afterTextChanged
与
editable.length()
方法的含义
参数有些混乱,因此这里有一些额外的说明。
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
:这是进行暂挂更改之前的文本内容。您不应该尝试更改它。
start
:这是新文本插入位置的索引。如果选择了一个范围,则它是该范围的开始索引。
count
:这是将要替换的所选文本的长度。如果什么都没有选择,那么count
将是0
。
after
:这是要插入的文本的长度。
onTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
:这是更改后的文本内容。您不应在此处尝试修改此值。修改editable
中afterTextChanged
,如果你需要。
start
:这是插入新文本的起点的索引。
before
:这是旧值。它是先前选择的文本的长度。这是相同的值count
在beforeTextChanged
。
count
:这是插入的文本的长度。这是相同的值after
在beforeTextChanged
。
afterTextChanged
afterTextChanged(Editable editable)
像一样onTextChanged
,这是在进行更改后调用的。但是,现在可以修改文本。
editable
:这是的可编辑文本EditText
。但是,如果更改它,则必须小心不要陷入无限循环。有关更多详细信息,请参见文档。