Вопрос

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

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

Большое спасибо! Эрик

Это было полезно?

Решение

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

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

Другие советы

Смотрите источник 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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top