Android: Altura total de ScrollView
-
25-09-2019 - |
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
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;
}