Android, найдите местоположение текста, к которому пользователь прикасался/нажимал

#android

Вопрос:

У меня есть текстовое представление с абзацем текста. Я пытаюсь получить точку (возможно, индекс), в которой пользователь коснулся/нажал на текст. Что-то вроде:

 TextView textView = (TextView)this.findViewById(R.id.textView);
textView.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
      TextView txt = (TextView)v;

      // magic here...
      index = ...
      
   }
});
 

Идея состоит в том, чтобы затем программно выделить определенную часть текста (что я уже могу сделать). Мне нужно встроить логику, чтобы был выбран очень конкретный вариант, чтобы пользователь не беспокоился о том, где начинается и где заканчивается.

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

1. Вы пробовали использовать mTextView.getSelectionStart() ?

Ответ №1:

Для этого вы можете реализовать OnTouchListener. Вот пример кода:

 txt.setOnTouchListener(new View.OnTouchListener() {

        @SuppressLint("ClickableViewAccessibility")
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            int x = (int)event.getX();
            int y = (int)event.getY();
            
            // Do stuff with x and y
            return false;
        }
    });
 

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

1. Это кажется немного громоздким, учитывая, что они могут прокручиваться, размеры шрифтов и т. Д. Я подумывал о том, чтобы сделать что-то подобное, но подумал, что может быть лучший метод.