web-dev-qa-db-fra.com

Android: hauteur totale de ScrollView

J'ai un ScrollView personnalisé (Android.widget.ScrollView étendu) que j'utilise dans ma mise en page. Je veux mesurer la hauteur totale du contenu de cette vue de défilement. getHeight () et getMeasuredHeight () ne me donnent pas de valeurs correctes (nombres trop élevés).

Informations générales: je veux déterminer jusqu'où l'utilisateur a fait défiler. J'utilise onScrollChanged pour obtenir la valeur X, mais j'ai besoin de connaître un pourcentage donc j'ai besoin de la hauteur totale de la barre de défilement.

Merci beaucoup! Erik

38
Erik

Un ScrollView a toujours 1 enfant. Tout ce que vous devez faire est d'obtenir la taille de l'enfant pour déterminer la taille totale:

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

Voir la source de ScrollView. Malheureusement, cette méthode est privée, mais vous pouvez la copier dans votre propre code. Notez que les autres réponses ne prennent pas en compte le remplissage

private int getScrollRange() {
    int scrollRange = 0;
    if (getChildCount() > 0) {
        View child = getChildAt(0);
        scrollRange = Math.max(0,
                child.getHeight() - (getHeight() - mPaddingBottom - mPaddingTop));
    }
    return scrollRange;
}
4
Nino van Hooff