在textView和editText中,每当TextView的文本改变时,TextWatcher的那几个方法就会被调用。关注文字改变时的状态。
et_video_title.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable) {
if (s.length > 30) {
s.delete(30, s.length)
et_video_title.text = s
ToastUtils.showToastOfEWD(this@VideoDescActivity, getString(R.string.desc_video_max_size))
et_video_title.setSelection(s.length)
}
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
}
})
类似的还有
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//这个方法被调用,说明在s字符串中,从start位置开始的count个字符即将被长度为after的新文本所取代。在这个方法里面改变s,会报错。
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//这个方法被调用,说明在s字符串中,从start位置开始的count个字符刚刚取代了长度为before的旧文本。在这个方法里面改变s,会报错。
}
@Override
public void afterTextChanged(Editable s) {
//这个方法被调用,那么说明s字符串的某个地方已经被改变。
}
});
微博限制140个字的用法
@Override
public void afterTextChanged(Editable s) {
int textSum = s.toString().length();
if(textSum<130){
textView.setText("");
}
if(textSum>=130&&textSum<=140){
textView.setText(String.valueOf(140-textSum));
textView.setTextColor(getResources().getColor(R.color.gray));
}
if(textSum>140){
textView.setText(String.valueOf(140-textSum));
textView.setTextColor(getResources().getColor(R.color.red));
}
}