我想检测滚动事件的结束

时间:2018-08-04 15:03:40

标签: java android android-studio scroll scrollview

我想检测scrollView的滚动事件结束。 首先,我实现OnCrollChange方法,如果它们可以帮助我知道滚动的结束,我会尝试听一些值。 谢谢帮助我。

 scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener(){
            @Override
            public void onScrollChange(View view, int i, int i1, int i2, int i3){
                Toast.makeText(getApplicationContext(),"in SCroll ------->"+i+" "+i1+" "+i2+" "+i3,Toast.LENGTH_SHORT).show();
                shadowView.setBackgroundResource(R.drawable.shadow);
                if ((i3==0)){
                    Toast.makeText(getApplicationContext()," equality ----------------------> ",Toast.LENGTH_SHORT).show();
                    shadowView.setBackgroundResource(R.drawable.trans);
                }
                else {
                   // Toast.makeText(getApplicationContext()," NO ----------------------> ",Toast.LENGTH_SHORT).show();
                }
            }

        });

3 个答案:

答案 0 :(得分:2)

这会有所帮助

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

答案 1 :(得分:1)

如下修改您的onScrollChanged方法

       @Override
        public void onScrollChanged(View view, int i, int i1, int i2, int i3){
            View view = (View) getChildAt(getChildCount()-1);
            int delta = (view.getBottom()-(getHeight()+getScrollY()));
            if(delta == 0){
                // You have reached bottom of the scroll view
            }
        }

答案 2 :(得分:0)

谢谢大家。 经过一番测试后,我发现int i,int i1,int i2的值实时取相同的值(例如等于0),因此它解决了我的问题。 我现在不会使用您的建议,但是我只能通过阅读来从中学习一些重要的观念。