Подтвердить что ты не робот

Android: общая высота ScrollView

У меня есть собственный ScrollView (расширенный android.widget.ScrollView), который я использую в своем макете. Я хочу измерить общую высоту содержимого этого прокрутки. getHeight() и getMeasuredHeight() не дают мне правильных значений (слишком высокие числа).

Фоновая информация: я хочу определить, насколько далеко прокручивается пользователь. Я использую onScrollChanged, чтобы получить значение X, но мне нужно знать процент, поэтому мне потребуется общая высота полосы прокрутки.

Спасибо большое! Erik

4b9b3361

Ответ 1

В ScrollView всегда есть 1 ребенок. Все, что вам нужно сделать, это получить высоту ребенка, чтобы определить общую высоту:

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

Ответ 2

См. источник ScrollView. К сожалению, этот метод является закрытым, но вы можете скопировать его в свой собственный код. Обратите внимание, что другие ответы не учитывают прописку

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