Ответ 1
В ScrollView всегда есть 1 ребенок. Все, что вам нужно сделать, это получить высоту ребенка, чтобы определить общую высоту:
int totalHeight = scrollView.getChildAt(0).getHeight();
У меня есть собственный ScrollView (расширенный android.widget.ScrollView), который я использую в своем макете. Я хочу измерить общую высоту содержимого этого прокрутки. getHeight() и getMeasuredHeight() не дают мне правильных значений (слишком высокие числа).
Фоновая информация: я хочу определить, насколько далеко прокручивается пользователь. Я использую onScrollChanged, чтобы получить значение X, но мне нужно знать процент, поэтому мне потребуется общая высота полосы прокрутки.
Спасибо большое! Erik
В 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;
}