Hes*_*sam 272 android onchange listener android-edittext
在我的项目中,我有一个EditText
.我想计算中的字符数EditText
,并在数字中显示该数字TextView
.我写了以下代码,它工作正常.但是,我的问题是当我点击Backspace它计数时,但我需要减少数量.我怎么考虑Backspace?
tv = (TextView)findViewById(R.id.charCounts);
textMessage = (EditText)findViewById(R.id.textMessage);
textMessage.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
i++;
tv.setText(String.valueOf(i) + " / " + String.valueOf(charCounts));
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});
Run Code Online (Sandbox Code Playgroud)
xte*_*ore 142
使用
s.length()
Run Code Online (Sandbox Code Playgroud)
以下是其中一个答案中提出的,但效率很低
textMessage.getText().toString().length()
Run Code Online (Sandbox Code Playgroud)
And*_*ong 38
如何在EditText中获取char的长度并显示它?
沿着这条线的东西
tv.setText(s.length() + " / " + String.valueOf(charCounts));
Run Code Online (Sandbox Code Playgroud)
小智 28
您的代码中几乎没有变化:
TextView tv = (TextView)findViewById(R.id.charCounts);
textMessage = (EditText)findViewById(R.id.textMessage);
textMessage.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
tv.setText(String.valueOf(s.toString().length()));
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});
Run Code Online (Sandbox Code Playgroud)
这是一个稍微更一般的答案,对未来的观众有更多的解释.
如果要在文本更改后查找文本长度或执行其他操作,可以将文本更改的侦听器添加到编辑文本中.
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) {
}
});
Run Code Online (Sandbox Code Playgroud)
监听器需要TextWatcher
,这需要三种方法来覆盖:beforeTextChanged
,onTextChanged
,和afterTextChanged
.
你可以得到字符计数onTextChanged
或beforeTextChanged
与
charSequence.length()
Run Code Online (Sandbox Code Playgroud)
或afterTextChanged
与...
editable.length()
Run Code Online (Sandbox Code Playgroud)
参数有点令人困惑,所以这里有一点额外的解释.
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
.但是,如果你改变它,你必须小心不要陷入无限循环.有关详细信息,请参阅文档. 归档时间: |
|
查看次数: |
250101 次 |
最近记录: |