Android: Total height of ScrollView

2019-01-14 05:48发布

I have a custom ScrollView (extended android.widget.ScrollView) which I use in my layout. I want to measure the total height of the contents of this scrollview. getHeight() and getMeasuredHeight() don't give me correct values (too high numbers).

Background information: I want to determine how far the user has scrolled. I use onScrollChanged to get the X value, but I need to know a percentage so I'll need the total scrollbar height.

Thanks a lot! Erik

2条回答
我欲成王,谁敢阻挡
2楼-- · 2019-01-14 06:10

A ScrollView always has 1 child. All you need to do is get the height of the child to determine the total height:

int totalHeight = scrollView.getChildAt(0).getHeight();
查看更多
三岁会撩人
3楼-- · 2019-01-14 06:21

See the source of ScrollView. Unfortunately, this method is private, but you could copy it into your own code. Note that other answers don't take padding into account

private int getScrollRange() {
    int scrollRange = 0;
    if (getChildCount() > 0) {
        View child = getChildAt(0);
        scrollRange = Math.max(0,
                child.getHeight() - (getHeight() - mPaddingBottom - mPaddingTop));
    }
    return scrollRange;
}
查看更多
登录 后发表回答