IsSelectable крадет событие из OnClickListener в TextView

#android

#Android

Вопрос:

У меня есть TextView, для атрибута isSelectable которого установлено значение TRUE, но у меня также есть OnClickListener для него, потому что. Я хочу, чтобы, если человек удерживает текст, текст, который нужно выделить, и он может скопировать его, но если он просто нажмет на него, я хочу, чтобы открылся экран.

             this.subtitle.setTextIsSelectable(true);
            this.subtitle.setOnClickListener(v -> openMyScreen());
  

Итак, что происходит, так это то, что выделение работает нормально, но если вы нажмете на него, первое событие где-то будет использовано, и только когда я нажимаю во второй раз, оно работает. Есть ли у кого-нибудь 1 какие-либо идеи, как я могу это исправить.

Комментарии:

1. используйте событие LongClickListener.

Ответ №1:

Итак, проблема в том, что когда вы нажимаете на него один раз, textview фокусируется. Это то, что потребляет ваше событие click. Единственное решение, которое я смог найти, — это использовать setOnFocusChangeListener в textview, затем проверить, сфокусировался ли texview, и использовать это как событие щелчка.

 textview.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            // Handle click event
        }
    }
});
  

Пожалуйста, обратите внимание, что вам все равно придется использовать OnClickListener также для обработки событий щелчка после фокусировки