web-dev-qa-db-ja.com

Android:ScrollViewの総高さ

レイアウトで使用するカスタムScrollView(拡張Android.widget.ScrollView)があります。このスクロールビューのコンテンツの全体の高さを測定したい。 getHeight()とgetMeasuredHeight()は正しい値を与えません(高すぎる)。

背景情報:ユーザーがどこまでスクロールしたかを判断したい。 onScrollChangedを使用してX値を取得しますが、パーセンテージを知る必要があるため、スクロールバーの高さの合計が必要になります。

どうもありがとう!エリック

36
Erik

ScrollViewには常に1つの子があります。必要なのは、子供の身長を取得して合計身長を決定することだけです。

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

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;
}
4
Nino van Hooff