Android: ¿Cómo determinar el índice de caracteres de la posición de un evento táctil en TextView?

Tengo un TextView con un OnTouchListener . Lo que quiero es el índice de caracteres que el usuario está señalando cuando recibo el MotionEvent . ¿Hay alguna manera de llegar a las métricas de fuente subyacente de TextView ?

No estoy enterado de una manera directa simple de hacer esto pero usted debe poder poner algo junto usando el objeto de la pintura del TextView vía una llamada a TextView.getPaint ()

Una vez que tenga el objeto de pintura tendrá acceso a los FontMetrices subyacentes a través de una llamada a Paint.getFontMetrics () y tendrá acceso a otras funciones como Paint.measureText () Paint.getTextBounds () y Paint.getTextWidths () para acceder a la Tamaño real del texto visualizado.

Has intentado algo como ésto:

 Layout layout = this.getLayout(); if (layout != null) { int line = layout.getLineForVertical(y); int offset = layout.getOffsetForHorizontal(line, x); // At this point, "offset" should be what you want - the character index } 

Espero que esto ayude…

  • Fondo personalizado de la ventana emergente del error
  • Resaltar Textview con EditText
  • Android: la aplicación se bloquea al iniciar una nueva actividad
  • Comportamiento de líneas de interrupción de texto de Android (cómo dividir la última palabra)
  • Dibujar contenido de TextView actual en Bitmap
  • TextView - cómo hacer la segunda línea sangría
  • Cómo dibujar correctamente texto en una clase extendida para TextView?
  • ¿Hay una forma de realizar un seguimiento de esta excepción: la búsqueda de enfoque devolvió una vista que no pudo tomar el foco
  • TextInputLayout setErrorEnabled no crea nuevo objeto TextView
  • ¿Cómo modificar la propiedad MaxLines de TextView con animación?
  • Cómo hacer un TextView en negrita?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.