Desplazamiento por programación de una palabra en vista en una vista de texto
Tengo TextView con una gran cantidad de texto, el usuario busca algo y resalto los partidos, sin embargo, pueden estar muy abajo de la página, ¿hay una manera de desplazarse hasta el primer partido?
Miré por todas partes google y no parece encontrar nada relevante.
- ListView con TextView autoLink no recibe OnItemClickListener
- Centrar el contenido de TextView vertical y horizontalmente - LinearLayout
- Cómo quitar la etiqueta de HTML en android?
- Errores de NullPointer de TextSwitcher
- AddTextChangedListener con listview con subtexto
Mi diseño:
<ScrollView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:requiresFadingEdge="vertical" android:id="@+id/sclView"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/txtView" android:textSize="16sp" android:paddingTop="10dp" android:paddingLeft="20dp" android:paddingRight="20dp" android:paddingBottom="10dp" android:lineSpacingExtra="5dp" android:textColor="@color/TextGray" android:textIsSelectable="true"/> </ScrollView>
- Android: cambia dinámicamente TextView Color de fondo
- ¿Cómo puedo cambiar la parte del color de un TextView?
- ¿Cómo hacer la escritura de texto de animación?
- Dibuja un personaje con 2 colores en Android
- Cómo evitar que las URL se envuelvan en TextView?
- Puedo cambiar el aspecto y la sensación de la clickablespan
- TextView con diferentes textSize
- Android - ¿Espacio entre TextView y Togglebutton?
Supongo que no hay desplazamiento horizontal. Si lo hay, puede extrapolar esta respuesta. Al ver que estás destacando los partidos, también voy a suponer que ya tienes la parte de búsqueda. Esto significa que debe tener al menos una posición de inicio para la cadena de búsqueda en el CharSequence
.
Utilice Layout.getLineForOffset
para buscar la línea de la cadena, luego Layout.getLineTop
para obtener la posición de la parte superior de la línea, luego View.scrollTo
para desplazarse a la posición deseada. Debe ser algo como esto:
Layout layout = textView.getLayout(); scrollView.scrollTo(0, layout.getLineTop(layout.getLineForOffset(startPos)));
No he probado esto, así que usted puede ser que tenga que hacer algo para ocuparse del relleno que usted ha agregado, etc. pero yo pensaría que la idea general debe trabajar.
- ¿Qué significan los distintos iconos y símbolos de la barra lateral de la estructura de Android Studio?
- Patrón de Android AsyncTask / doInBackground