Pregunta

Tengo un ScrollView personalizado (extendida android.widget.ScrollView) que utilizo en mi diseño. Quiero medir la altura total de los contenidos de esta ScrollView. getHeight () y getMeasuredHeight () no me dan valores correctos (número demasiado alto).

Antecedentes: Quiero para determinar hasta qué punto el usuario ha desplazado. Yo uso onScrollChanged para obtener el valor X, pero necesito saber un porcentaje por lo que voy a necesitar la altura total barra de desplazamiento.

Muchas gracias! Erik

¿Fue útil?

Solución

A ScrollView siempre tiene 1 hijo. Todo lo que necesita hacer es obtener la altura del niño para determinar la altura total:

int totalHeight = scrollView.getChildAt(0).getHeight();

Otros consejos

Ver la fuente del ScrollView. Por desgracia, este método es privado, pero se puede copiar en su propio código. Tenga en cuenta que otras respuestas no toman en cuenta el relleno

private int getScrollRange() {
    int scrollRange = 0;
    if (getChildCount() > 0) {
        View child = getChildAt(0);
        scrollRange = Math.max(0,
                child.getHeight() - (getHeight() - mPaddingBottom - mPaddingTop));
    }
    return scrollRange;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top