2015-01-28 4 views
1

У меня есть ListView с включенным TextView. Проблема, с которой я столкнулась, - это когда пользователь прокручивает список, по ошибке, если он коснется текста, он открывает ссылку.Linkify textview получает щелчок при прокрутке списка.

Могу ли я прервать это событие click?

Или можно удалить касание и включить только события click для связывания добавленных текстовых просмотров. ?

Ожидает предложений.

+0

Да, вы должны использовать onClickListener для вашего TextView, а не onTouch. – Carnal

+0

удалите касание и добавьте событие ручного щелчка –

+0

OnClick повлияет на весь текст. Мне просто нужно событие click только для ссылки. Допустим, у меня есть текст как «Lorem ipsum dolor sit amet, consectetuer ullamcorper mollis. Sit totam ut ut sit quisque, www.google.com lectus quam laoreet, nam morbi interdum habitasse« Только google.com должен получить событие click. не весь текст. потому что в listview уже есть событие click элемента. –

ответ

3

решение моей проблемы после Linkify удалить метод прокрутки TextView и обрабатывать действия обнаружения ссылки LinkMovementMethod в onTouchEvent в TextView.

@override 
public boolean onTouchEvent(MotionEvent event) { 
    TextView widget = (TextView) this; 
    Object text = widget.getText(); 
    if (text instanceof Spanned) { 
     Spannable buffer = (Spannable) text; 
     int action = event.getAction(); 

     if (action == MotionEvent.ACTION_UP 
       || action == MotionEvent.ACTION_DOWN) { 
      int x = (int) event.getX(); 
      int y = (int) event.getY(); 

      x -= widget.getTotalPaddingLeft(); 
      y -= widget.getTotalPaddingTop(); 

      x += widget.getScrollX(); 
      y += widget.getScrollY(); 

      Layout layout = widget.getLayout(); 
      int line = layout.getLineForVertical(y); 
      int off = layout.getOffsetForHorizontal(line, x); 

      ClickableSpan[] link = buffer.getSpans(off, off, 
        ClickableSpan.class); 

      if (link.length != 0) { 
       if (action == MotionEvent.ACTION_UP) { 
        link[0].onClick(widget); 
       } else if (action == MotionEvent.ACTION_DOWN) { 
        Selection.setSelection(buffer, 
          buffer.getSpanStart(link[0]), 
          buffer.getSpanEnd(link[0])); 
       } 
       return true; 
      } 
     } 

    } 

    return false; 
} 

Таким образом, у меня есть обнаружение Link_Click (выполняется только с пользователем касается ссылки, а не весь TextView) и я не весь LinkMovementMethod.

+0

Спасибо, и я опубликовал тот же ответ. –