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.
- Cómo RelativeLayout Alinear Center android
- Poner texto constante dentro de EditText que no debería ser editable - Android
- Cambiar el color de texto de un solo ClickableSpan cuando se presiona sin afectar a otros ClickableSpans en el mismo TextView
- Android TextView: ¿hay una manera de forzar la animación de la marquesina con texto corto?
- Añadir opaco "sombra" (esquema) a Android TextView
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)?
- Obtener el tamaño de un texto en TextView
- Android: TextView dentro de ScrollView: Cómo limitar la altura
- Error de estilo de texto de Android: el recurso no es un ColorStateList
- El salto de línea en Android agrega relleno
- Animación al cambiar la vista de texto
- Espaciado de párrafos con SpannableStringBuilder en TextView
- Android SDK equivlent para viewWillAppear (iOS)?
- Ajuste automático de TextView para Android
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); } });
- Predeterminado bindPreferenceSummaryToValue se bloquea para tipos que no son de cadena
- Cómo calcular la distancia de diferentes marcadores en un mapa y luego recoger el menos uno