Desplazamiento de un TextView a una línea específica

Tengo un TextView dentro de un ScrollView. Digamos que el ScrollView se llama s y el TextView se denomina t .

Tengo muchas líneas que se mostrarán en el TextView y al mismo tiempo quiero desplazar la vista a una línea específica.

Así que hice esto:

 t.setText(aVeryLongString); int y = t.getLayout().getLineTop(40); // eg I want to scroll to line 40 s.scrollTo(0, y); 

Pero no se desplazará, excepto la segunda vez. Parece que en la primera vez que termina el código, el ScrollView sabe cuánto es la altura total del TextView.

Así que creo que debe haber algo para forzar el cálculo de la altura necesaria antes de la llamada scrollTo. ¿Cómo hacer eso (o no)?

Encontré la respuesta aquí .

En lugar de llamar a scrollTo directamente, debemos llamar al post lugar de ScrollView. Esto funciona.

 t.setText(aVeryLongString); s.post(new Runnable() { @Override public void run() { int y = t.getLayout().getLineTop(40); // eg I want to scroll to line 40 s.scrollTo(0, y); } }); 
  • Escala de texto en una vista para que se ajuste?
  • Cómo establecer programaticamente maxLength en Android TextView?
  • Desplazamiento horizontal del texto en Android
  • ¿Cómo escalar / cambiar el tamaño del texto para que se ajuste a un TextView?
  • ¿Cómo obtener el nombre de la familia fontFamily de TextView?
  • Android: establece la vista de texto al hacer clic en el elemento
  • ¿Cómo puedo probar por Espresso android.widget.TextView setError?
  • Cambiar el color de TextView que se puede hacer clic en el enfoque y hacer clic?
  • TextViews en la parte superior e inferior, el espacio restante lleno de ListView
  • Por qué mi invocación de Canvas.drawText () simplemente no funciona
  • ¿Hay una manera más simple / mejor de poner una frontera / contorno alrededor de mi TextView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.