EditText странное поведение фокуса

1

Хорошо,

Когда у меня есть фокус на мой EditText и клавиатура и т.д. показывает. Я нажимаю на свой чертеж в конце текста редактирования (кнопка "Отмена"). Я распознаю это событие с помощью onTouchListener и скрываю клавиатуру, четкую фокусировку и т.д.

Однако, когда я "касаюсь" кнопки отмены, она скрывает клавиатуру, но фокус остается на тексте редактирования. Это означает, что курсор все еще показывает, но не мигает. Поэтому, когда я снова щелкаю по тексту редактирования, чтобы получить фокус, он показывает возможность копирования/вставки и т.д., Как будто я долго нажимаю на курсор и не показывает клавиатуру.

Но когда я "нажимаю" кнопку отмены, она очищает фокус, скрывает клавиатуру и, что наиболее важно, скрывает курсор, в результате чего полностью удаляется фокус. Затем, когда я снова нажимаю на текст редактирования, он снова фокусируется и показывает клавиатуру.

Что это за странное поведение и как мне сделать так, чтобы оно всегда выполняло "прессовое" поведение.

мой код:

searchView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                if (event.getRawX() >= searchView.getRight() - searchView.getCompoundDrawables()[2].getBounds().width()) {
                    hideKeyboard(v);
                    isSearching = false;
                    searchView.setText("");
                    searchView.clearFocus();
                    searchView.setFocusable(false);
                    searchView.setFocusableInTouchMode(false);
                    getView().requestFocus(); // parent has both focusables true
                    searchView.setFocusable(true);
                    searchView.setFocusableInTouchMode(true);
                    fetchArticles();

                    return true;
                }
            }
            return false;
        }
    });

Как вы видите, я стараюсь изо всех сил, чтобы всегда вести себя одинаково. Однако пока не повезло. Надеюсь, вы, ребята, можете мне помочь!

Теги:
android-edittext

2 ответа

1

Попробуйте это в родителе этого EditText или в представлениях, которые вы хотите коснуться:

android:clickable="true"
android:focusable="true" 
android:focusableInTouchMode="true"

Это позволит полностью перенести фокус в другом месте с EditText

Однако, в случае, когда ваш drawable находится внутри вашего Edittext, как здесь:

android:drawableLeft="@drawable/my_icon"

решение не будет работать до тех пор, пока вы не сделаете его в виде отдельного представления в макете.

  • 0
    Уже занимаюсь этим, и это не работает.
  • 0
    Может быть, вы делаете что-то другое. Я тестировал прямо сейчас в моем проекте. У меня есть 2 EditText внутри RelativeLayout. Когда я пишу выше строки в xml этого родственника, затем нажимаю на родственник за пределами этих правок, фокус исчезает, клавиатура и курсор скрываются.
Показать ещё 7 комментариев
0

Итак, мое текущее "решение" - это предложенное @Dmitriy Pavlukhin решение.

Вместо того чтобы использовать drawableEnd из самого EditText, я создал отдельный вид, который имеет тот же самый объект рисования, и убедитесь, что он нарисован в той же позиции. Теперь, когда я щелкаю этот вид, он очищает вид по желанию в 100% случаев. Кодовая база остается той же, что и в вопросе, однако теперь она реализована в виде OnClick в отдельном представлении.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню