42

我有一个在我的布局中使用的自定义 ScrollView(扩展的 android.widget.ScrollView)。我想测量这个滚动视图内容的总高度。getHeight() 和 getMeasuredHeight() 没有给我正确的值(太高的数字)。

背景信息:我想确定用户滚动了多远。我使用 onScrollChanged 来获取 X 值,但我需要知道一个百分比,所以我需要滚动条的总高度。

非常感谢!埃里克

4

2 回答 2

111

一个 ScrollView 总是有 1 个孩子。您需要做的就是获取孩子的身高以确定总高度:

int totalHeight = scrollView.getChildAt(0).getHeight();
于 2011-02-14T07:53:12.423 回答
6

查看 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;
}
于 2017-10-10T11:45:50.940 回答