+ private void hookClearClickListener(AutoCompleteTextView v) {
+ final TextWatcher w = new TextWatcher() {
+ private boolean hasText;
+ private boolean hadText;
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ hadText = s.length() > 0;
+ }
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+ @Override
+ public void afterTextChanged(Editable s) {
+ hasText = s.length() > 0;
+
+ if (hadText && !hasText) {
+ v.setCompoundDrawablesRelative(null, null, null, null);
+ }
+ if (!hadText && hasText) {
+ v.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0,
+ R.drawable.ic_clear_black_24dp, 0);
+ }
+ }
+ };
+ View.OnFocusChangeListener prevFocusListener = v.getOnFocusChangeListener();
+ v.setOnFocusChangeListener((v12, hasFocus) -> {
+ if (hasFocus) {
+ if (((TextView) v12).getText().length() > 0) {
+ ((TextView) v12).setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0,
+ R.drawable.ic_clear_black_24dp, 0);
+ }
+ ((TextView) v12).addTextChangedListener(w);
+ }
+ else {
+ ((TextView) v12).removeTextChangedListener(w);
+ ((TextView) v12).setCompoundDrawables(null, null, null, null);
+ }