Я использую textChangedListener для редактирования текста, чтобы показать/скрыть кнопку плавающего действия.Android TextChangedListener TextWatcher() off behavior
Все в целом работает должным образом. Если текст редактирования не пуст, тогда покажите fab, если пусто, а затем скройте fab.
Однако я заметил, что при использовании backspace, чтобы удалить введенный текст, удаление первого пробела запускает hide fab, а затем быстро показывает fab, так как editText не пуст.
Я осмотрелся и ничего не видел по этому поводу. Так что я должен делать что-то неправильно, но я не уверен, что.
Ниже приводится моя реализация. Я попробовал и все они дают мне такое же поведение if(editText.getText().toString().isEmpty())
if(editText.getText().toString().length()==0))
if(editText.getText().toString().equals("")
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d(TAG, "TEXT CHANGED onTextChanged" + editText.getText().toString());
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.d(TAG, "TEXT CHANGED beforeTextChanged" + editText.getText().toString());
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
Log.d(TAG, "TEXT CHANGED afterTextChanged" + editText.getText().toString());
// s = editText.getText().toString(); editText.getText().toString()
if (s.toString().isEmpty()) {
fab.setVisibility(View.INVISIBLE);
fab.setAnimation(slideDownAnim);
slideDownAnim.start();
}else{
fab.setVisibility(View.VISIBLE);
fab.setAnimation(slideUpAnim);
slideUpAnim.start();
}
// TODO Auto-generated method stub
}
});
Заранее спасибо
*** UPDATE **** Найдено ответ, который решает мой проблема здесь. TextWatcher events are being fired multiple times
ааа нашел ответ, который работал для меня в другом потоке .. http://stackoverflow.com/questions/17535415/textwatcher-events-are-being-fired- много раз – user3246849