我有一个应用程序,其中我有很多编辑文本,但在一些编辑文本中我只想实现一个TextWatcher方法。我该怎么做那种善意的指导。
代码: -
private TextWatcher m_textWatcher = 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) {
isFieldsEmpty();
}
@Override
public void afterTextChanged(Editable s) {
m_mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = m_mainLayout.getRootView().getHeight() - m_mainLayout.getHeight();
if (!(heightDiff > RewardUtil.dpToPx(mContext, 200))) { // if more than 200 dp, it's probably a keyboard...
m_otpEditText.clearFocus();
}
}
});
}
};
m_otpEditText.addTextChangedListener(m_textWatcher);
答案 0 :(得分:2)
创建metod lke this。
public static class MyTextWatcher implements TextWatcher {
private EditText mEditText;
public MyTextWatcher(EditText editText) {
mEditText = editText;
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
oldText = mEditText.toString();
}
....
}
并像这样使用......
m_otpEditText.addTextChangedListener(new MyTextWatcher(mFirstEditText));
它会帮助你。 感谢。
答案 1 :(得分:1)
首先,您可以按如下方式创建一个类:
public class CustomTextWatcher implements 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) {
}
}
此后,只需覆盖您需要的方法。假设您只需要onTextChanged方法,那么您可以执行以下操作:
m_otpEditText.addTextChangedListener(new CustomTextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
答案 2 :(得分:0)
TextWatcher类使您可以灵活地覆盖任何需要的方法。如果你真的只需要一个方法,那么只覆盖一个方法,但你必须始终实现所有方法。