Событие Onclick в текстовом режиме (с TextIsSelectable = "true" ), которое вызвано вторым кликом

У меня есть onClickListener на textview, а textview имеет флаг, который он selectable. Но указанное событие onclick, указанное мной, вызывается только при повторном нажатии textview во второй раз. После второго раза он вызывает onclick вправо, но если другой textview, который также является selectable с onClickListener, он также вызывается только во второй раз, тогда он работает нормально, но тогда другой работает только с второй раз. Я не могу найти источник этих странных событий.

telefoonTXT.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {startTelIntent();}}
);

urlTXT.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {startWebIntent();}
});

Ответ 1

Я столкнулся с этой проблемой. Когда текст сначала затрагивается onTouch, тогда вызывается OnSelection и, наконец, OnClick. Если я четко понимаю вашу проблему, вы хотите выбрать текст в текстовом представлении, когда пользователь double taps или long presses, как обычный выбор текста, но когда пользователь просто нажимает его, как только вы хотите, чтобы функция OnClick функционировала. Я думаю, что следующее может помочь вам.

Добавить gestureDetector в текст.

GestureDetectorCompat mDetector;
mDetector = new GestureDetectorCompat(this, new GestureDetector.SimpleOnGestureListener());

mDetector.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {
    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        // This is where u add your OnClick event
        startTelIntent();
        return false;
    }

    @Override
    public boolean onDoubleTap(MotionEvent e) {
        Log.d("dtttt", "double tap");
        return false;
    }

    @Override
    public boolean onDoubleTapEvent(MotionEvent e) {
        return false;
    }
});

telefoonTXT.setOnTouchListener(new View.OnTouchListener() {
     @Override
     public boolean onTouch(View v, MotionEvent event) {
          mDetector.onTouchEvent(event);
          return false;
     }
});

Ответ 2

установите это...

TextisSelectable = "false"

Я думаю, что это будет правильно работать.