我有一个 EditText。在按钮单击时调用 EditText 的 setText() 方法。如果使用按钮单击或用户手动输入位置,我想识别。我使用过 TextWatcher ,如果用户手动输入位置并且使用 setText 时会调用 afterTextChange() 。
如果手动编辑或以编程方式编辑editext,是否可以识别场景。
请帮忙。
感谢你在期待。
我有一个 EditText。在按钮单击时调用 EditText 的 setText() 方法。如果使用按钮单击或用户手动输入位置,我想识别。我使用过 TextWatcher ,如果用户手动输入位置并且使用 setText 时会调用 afterTextChange() 。
如果手动编辑或以编程方式编辑editext,是否可以识别场景。
请帮忙。
感谢你在期待。
你可以这样做:
private boolean isTextSetProgrammatically = false;
private void setTextProgrammatically(String text){
myEditText.removeTextChangedListener(instanceOfMyTextWatcher);
myEditText.setText(text);
isTextSetProgrammatically = true;
myEditText.addTextChangedListener(instanceOfMyTextWatcher)
}
然后还将 a 设置TextWatcher
为您的 EditText 并在触发isTextSetProgrammatically
时设置为 false 。onTextChanged()
使用 textwatcher 以及 Ahmad 的建议。如果在编辑文本中使用类型,您将知道。
EditText search= (EditText) findViewById(R.id.search);
search.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// s is the typed character sequence.
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
}
});
您可以编写自定义 EditText 扩展 EditText 并覆盖 setText() 方法。
@override
public void setText(CharSequence str) {
super.setText(...);
// to do you callback
}