在Android上检测scrollview的位置

时间:2019-07-26 07:38:44

标签: android

我正在使用android上的代码来应用表单,并且在完成表单之前,用户必须接受政策。如果我在TextView内放一个ScrollView和一个接受按钮,用户可以在阅读前直接接受。但是我必须强迫用户滚动到底部,然后使“接受”按钮变为启用状态,然后用户接受它,然后继续。首先,我在Dialog Window内尝试了此操作。它变得越来越复杂。现在,我正在尝试将其添加到另一个活动中。

是否有任何方法可以检测到Scroll View的位置已结束?

3 个答案:

答案 0 :(得分:0)

您可以将canScrollVertically方法与setOnScrollChangeListener一起使用,例如:

 scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
            @Override
            public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                if (scrollView.canScrollVertically(1)) {
                    //user can't scroll more in bottom direction
                }
            }
        });

如果可以到达canScrollVertically,则用户位于scrollView的底部,并且无法滚动更多内容。 如果您输入-1之类的负值,则该方法会检测用户是否可以向上滚动

答案 1 :(得分:0)

您可以通过以下代码进行检测

scrollView.getViewTreeObserver()
    .addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() 
{
        @Override
        public void onScrollChanged() {
            if (scrollView.getChildAt(0).getBottom()
                 <= (scrollView.getHeight() + scrollView.getScrollY())) {
                //scroll view is at bottom
            } else {
                //scroll view is not at bottom
            }
        }
    });

答案 2 :(得分:0)

  1. 片段只要为其分配了ID,它们就会自动保存和恢复其视图的状态。 通过分配一个Id(android:id)滚动视图,如果您正在使用Fragment,则为您做魔术(恢复滚动状态)

  2. 活动

    //保存索引和最高位置 int索引= mList.getFirstVisiblePosition(); 查看v = mList.getChildAt(0); int top =(v == null)吗? 0:(v.getTop()-mList.getPaddingTop());

// ...

//恢复索引和位置 mList.setSelectionFromTop(index,top);