【问题标题】:How to get the scrollview total height = Scrollview.getScrollY() on Android如何在 Android 上获取滚动视图总高度 = Scrollview.getScrollY()
【发布时间】:2015-09-26 04:11:44
【问题描述】:

我已经查看了一些论坛,但这些技巧对我不起作用。

我有这个代码:

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()。

我怎样才能让两者的总大小相同?

【问题讨论】:

    标签: android scrollview android-scrollview


    【解决方案1】:

    只是正式回答这个问题,因为我遇到了同样的问题。

    如果您登录:scrollView.getScrollY(); 并向下滚动到视图底部,您将获得一个代表 ScrollView 高度的数字。你会注意到scrollView.getHeight() 只给你当前可见视图的高度。所以你想使用:scrollView.getChildAt(0).getHeight(); 如看到的here。但这会给你一个大于scrollView.getScrollY() 的最大值的数字。所以你需要用scrollView的高度减去它。

    TLDR:

    totalHeightOfScrollView = scrollView.getChildAt(0).getHeight() 
        - scrollView.getHeight();
    

    这将等于最底部的scrollView.getScrollY()

    【讨论】:

    • 好的。但是更好的方式来了解Listview是否已经到了最新的视图或者他的结尾,你可以试试listview.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { Log.d(getClass().getSimpleName(), "total now:"+(firstVisibleItem+visibleItemCount)+"/"+totalItemCount); } });
    • 我认为这是一个不同的问题,也许那是您最初想要的问题,但我只是概述了您对原始问题的回答(以评论的形式)。
    【解决方案2】:

    也许会改变

    layout_height="wrap_content"
    

    layout_height="match_parent"
    

    【讨论】:

    • 我按照你写的去做。现在我有两个 layout_height="match_parent"。但它不起作用。我从日志中得到 scroll ch: 992/1758
    • 我现在明白了。 1758-992 = 766 = 滚动视图.getHeight()。所以我做了scrollview.getScrollY()+scrollview.getHeight() = scrollview.getChildAt(0).getBottom()。
    • 感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多