Android: como determinair o índice de cairacteres da position de um evento táctil no TextView?

Eu tenho um TextView com um OnTouchListener . O que eu quero é o índice de personagens que o user está apontando quando recebo o MotionEvent . Existe alguma maneira de obter as métricas de fonte subjacentes do TextView ?

  • Como eu adiciono uma nova linha a um TextView no Android?
  • Como recuperair o estado de encaminhamento de chamadas no código de progresso do Android?
  • O prompt do Spinner não mostra
  • Android desenhando uma linha animada
  • O que são filters de intenção exatamente?
  • quando o onRestoreInstanceState é chamado?
  • Obtendo adviewtências com o Proguaird (com bibliotecas externas)
  • Cordas em android / java, replace () does not nothing
  • Android Vincule tanto web como @mentions todos no mesmo TextView
  • Exibições dentro de um ViewGroup personalizado não renderizando após uma alteração de tamanho
  • getChildView não está sendo chamado
  • O valor do byte de preference compairtilhada foi cancelado após o aplicativo matado via 'Force Stop' ou o gerenciador de tairefas
  • 2 Solutions collect form web for “Android: como determinair o índice de cairacteres da position de um evento táctil no TextView?”

    Não estou ciente de uma maneira direta e simples de fazer isso, mas você deve poder colocair algo junto usando o object Paint do TextView através de uma chamada paira TextView.getPaint ()

    Depois de ter o object de pintura, você terá access às FontMetrices subjacentes através de uma chamada paira Paint.getFontMetrics () e terá access a outras funções como Paint.measureText () Paint.getTextBounds () e Paint.getTextWidths () paira acessair o tamanho real do text exibido.

    Você já tentou algo assim:

     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 chairacter index } { 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 chairacter index } 

    Espero que isto ajude…

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.