Android: onTouch для интервалов в тексте «Spannable» - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть TextView, содержащий редактируемый текст.В этом тексте есть картинки (drawables, я использовал Html.ImageGetter), для которых я хочу зарегистрировать события onTouch.Поэтому, когда пользователь касается изображения, являющегося частью связанного текста, я хочу это знать.(И к какому образу он прикоснулся).

Возможно ли это?Если так, может, без грязных обходных путей?

С наилучшими пожеланиями, Ян Оливер Олерих

1 Ответ

4 голосов
/ 05 марта 2011

Скопированный из исходного кода ArrowKeyMovementMethod, вы можете попробовать использовать следующий фрагмент кода:

 private int getOffset(int x, int y, TextView widget){
  // Converts the absolute X,Y coordinates to the character offset for the
  // character whose position is closest to the specified
  // horizontal position.
  x -= widget.getTotalPaddingLeft();
  y -= widget.getTotalPaddingTop();

  // Clamp the position to inside of the view.
  if (x < 0) {
      x = 0;
  } else if (x >= (widget.getWidth()-widget.getTotalPaddingRight())) {
      x = widget.getWidth()-widget.getTotalPaddingRight() - 1;
  }
  if (y < 0) {
      y = 0;
  } else if (y >= (widget.getHeight()-widget.getTotalPaddingBottom())) {
      y = widget.getHeight()-widget.getTotalPaddingBottom() - 1;
  }

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

  Layout layout = widget.getLayout();
  int line = layout.getLineForVertical(y);

  int offset = layout.getOffsetForHorizontal(line, x);
  return offset;
}

Надеюсь, это поможет, EdenSphere.

...