solo - seleccionar texto edittext android
¿Hay alguna forma de recuperar un conteo o rango de líneas visibles de TextView? (2)
Tengo un TextView de pantalla completa que contiene un Spanned largo que requiere desplazamiento. GetLineCount () de TextView me da el número total de líneas utilizadas para todo el bloque de texto, pero me gustaría saber cuántas líneas de texto están visibles en la pantalla.
O, mejor aún, ¿hay una manera de averiguar el rango de líneas actualmente visibles en la pantalla? Por ejemplo, a medida que la vista se desplaza, ¿puedo saber que las líneas 20-60 están visibles actualmente?
Me di cuenta de la respuesta:
int height = myTextView.getHeight();
int scrollY = myTextView.getScrollY();
Layout layout = myTextView.getLayout();
int firstVisibleLineNumber = layout.getLineForVertical(scrollY);
int lastVisibleLineNumber = layout.getLineForVertical(scrollY+height);
Para hacer que funcionen, debes escribir el código publicado por @Robert de esta manera:
ViewTreeObserver vto = txtViewEx.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewTreeObserver obs = txtViewEx.getViewTreeObserver();
obs.removeOnGlobalLayoutListener(this);
height = txtViewEx.getHeight();
scrollY = txtViewEx.getScrollY();
Layout layout = txtViewEx.getLayout();
firstVisibleLineNumber = layout.getLineForVertical(scrollY);
lastVisibleLineNumber = layout.getLineForVertical(height+scrollY);
}
});