【发布时间】:2020-02-09 11:01:48
【问题描述】:
我想在 EditText 中删除字符时获得回调。
我该怎么做?
【问题讨论】:
标签: android android-edittext textwatcher
我想在 EditText 中删除字符时获得回调。
我该怎么做?
【问题讨论】:
标签: android android-edittext textwatcher
没有直接删除字符的回调!!
但是每次你添加任何文本或编辑你的EditText文本时,所有TextWatcher回调调用分别
(1-beforeTextChanged, 2-onTextChanged, 3-afterTextChanged)
因此,您可以检查所有这些中的删除操作,如下所示。 请注意,您不需要检查所有回调中的删除操作。 3 TextWatcher CallBacks中有3种方法可以理解TextWatcher中的删除操作,每种方法都可以解决您的问题:)
。我认为您最好了解一些 TextWatcher 回调参数。
正如@ikerfah所说的
方式:
onTextChanged 调用时填写该字段。比较你的
字段是 previous EditText count 和 count 参数是
当前EditTextCount;onTextChanged 监听器,只是你使用 length 而不是 count。在下面更改您的最终 addTextChangedListener 链接:
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
if (after < count) {
// delete character action have done
// do what ever you want
Log.d("MainActivityTag", "Character deleted");
}
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
//mPreviousCount count is fied
if (mPreviousCount > count) {
// delete character action have done
// do what ever you want
Log.d("MainActivityTag", "Character deleted");
}
mPreviousCount=count;
}
@Override
public void afterTextChanged(Editable editable) {
Log.d("MainActivityTag",editable.toString());
int length=editable.length();
//mPreviousLength is a field
if (mPreviousLength>length)
{
// delete character action have done
// do what ever you want
Log.d("MainActivityTag", "Character deleted");
}
mPreviousLength=length;
}
});
【讨论】:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
在 beforeTextChanged 回调中新建三个参数
现在您只需在这些参数之间进行比较,即可通过 beforeTextChanged 回调实现您想要的任何目标
【讨论】: