Android: Общая высота ScrollView
-
25-09-2019 - |
Вопрос
У меня есть пользовательский 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;
}