如何在 Android 上获取滚动视图总高度 = Scrollview.getScrollY()
How to get the scrollview total height = Scrollview.getScrollY() on Android
我已经看过一些论坛,但这些技巧对我不起作用。
我有这个代码:
scrollview = (ScrollView)v.findViewById(R.id.scrollView);
scrollview.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {
@Override
public void onScrollChanged() {
Log.d(MainActivity.TAG, "scroll ch: "+scrollview.getScrollY()+"/"+scrollview.getChildAt(0).getHeight());
}
});
在我的layout.xml
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<LinearLayout
android:id="@+id/principal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@drawable/horiz"
android:orientation="vertical"
android:showDividers="end|middle" >
</LinearLayout>
</ScrollView>
当我向下滚动到最后一个时,getScrollY() 小于 getChildAt(0).getHeight()。
我怎样才能使两者的总大小相同?
也许会改变
layout_height="wrap_content"
至
layout_height="match_parent"
只是为了正式回答这个问题,因为我 运行 遇到了同样的问题。
如果您登录:scrollView.getScrollY();
并向下滚动到视图底部,您将获得一个代表 ScrollView 高度的数字。您会注意到 scrollView.getHeight()
仅提供当前可见视图的高度。所以你想使用:scrollView.getChildAt(0).getHeight();
as seen here。但这给你的数字大于 scrollView.getScrollY()
的最大值。所以需要减去scrollView的高度。
TLDR:
totalHeightOfScrollView = scrollView.getChildAt(0).getHeight()
- scrollView.getHeight();
这将等于最底部的 scrollView.getScrollY()
。
我已经看过一些论坛,但这些技巧对我不起作用。
我有这个代码:
scrollview = (ScrollView)v.findViewById(R.id.scrollView);
scrollview.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {
@Override
public void onScrollChanged() {
Log.d(MainActivity.TAG, "scroll ch: "+scrollview.getScrollY()+"/"+scrollview.getChildAt(0).getHeight());
}
});
在我的layout.xml
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<LinearLayout
android:id="@+id/principal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@drawable/horiz"
android:orientation="vertical"
android:showDividers="end|middle" >
</LinearLayout>
</ScrollView>
当我向下滚动到最后一个时,getScrollY() 小于 getChildAt(0).getHeight()。
我怎样才能使两者的总大小相同?
也许会改变
layout_height="wrap_content"
至
layout_height="match_parent"
只是为了正式回答这个问题,因为我 运行 遇到了同样的问题。
如果您登录:scrollView.getScrollY();
并向下滚动到视图底部,您将获得一个代表 ScrollView 高度的数字。您会注意到 scrollView.getHeight()
仅提供当前可见视图的高度。所以你想使用:scrollView.getChildAt(0).getHeight();
as seen here。但这给你的数字大于 scrollView.getScrollY()
的最大值。所以需要减去scrollView的高度。
TLDR:
totalHeightOfScrollView = scrollView.getChildAt(0).getHeight()
- scrollView.getHeight();
这将等于最底部的 scrollView.getScrollY()
。