检测滚动视图是向上滚动还是向下滚动-Android

检测滚动视图是向上滚动还是向下滚动-Android,android,android-actionbar,android-scrollview,Android,Android Actionbar,Android Scrollview,我有一个ScrollView和一个LinearLayout和TextViews。我想检测ScrollView何时向上或向下滚动以隐藏/显示ActionBar您需要创建一个扩展ScrollView public class ExampleScrollView extends ScrollView 然后覆盖onScrollChanged,它将为您提供新的和旧的滚动位置,您可以从中检测哪个方向 protected void onScrollChanged(int l, int t, int old

我有一个
ScrollView
和一个
LinearLayout
TextView
s。我想检测
ScrollView
何时向上或向下滚动以隐藏/显示
ActionBar

您需要创建一个扩展
ScrollView

public class ExampleScrollView extends ScrollView 
然后覆盖
onScrollChanged
,它将为您提供新的和旧的滚动位置,您可以从中检测哪个方向

protected void onScrollChanged(int l, int t, int oldl, int oldt) 
看看这个

scrollView.setOnTouchListener(new View.OnTouchListener() {
  float y0 = 0;
  float y1 = 0;

  @Override
  public boolean onTouch(View view, MotionEvent motionEvent) {

    if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
      y0 = motionEvent.getY();
      if (y1 - y0 > 0) {
        Log.i("Y", "+");
        AnimateFloat(true);
      } else if (y1 - y0 < 0) {
        Log.d("Y", "-");
        AnimateFloat(false);
      }
      y1 = motionEvent.getY();
    }

    return false;
  }
});
scrollView.setOnTouchListener(新视图.OnTouchListener(){
浮动y0=0;
浮动y1=0;
@凌驾
公共布尔onTouch(视图、运动事件、运动事件){
if(motionEvent.getAction()==motionEvent.ACTION\u MOVE){
y0=motionEvent.getY();
如果(y1-y0>0){
Log.i(“Y”,“+”);
AnimateFloat(真);
}否则如果(y1-y0<0){
Log.d(“Y”和“-”);
AnimateFloat(假);
}
y1=motionEvent.getY();
}
返回false;
}
});
肯定简短的回答

scroll.setOnScrollChangeListener(新视图.OnScrollChangeListener(){
@凌驾
public void onScrollChange(视图v、int-scrollX、int-scrollY、int-oldScrollX、int-oldScrollY){
int x=滚动-旧滚动;
如果(x>0){
//向上滚动
}else如果(x<0){
//向下滚动
}否则{
}
}
});

我想我回答这个问题有点晚了,但这是我的答案

 scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
            float y = 0;

            @Override
            public void onScrollChanged() {
                if (scrollView.getScrollY() > y) {
                    Log.v("Message", "Scrolls Down");
                } else {
                    Log.v("Message", "Scrolls Up");
                }
                y = scrollView.getScrollY();
            }
        });

没有直接的方法。也许这对你有帮助。[[1]:然后我需要在xml文件中添加我的新ExampleCrollView。对吗?是的,使用完整的类路径,即
com.my.app.ExampleCrollView
我收到错误:自定义视图ExampleCrollView未使用2参数或3参数视图构造函数;xml属性将无法正常工作是的,您必须实现所有正确的构造函数
 scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
            float y = 0;

            @Override
            public void onScrollChanged() {
                if (scrollView.getScrollY() > y) {
                    Log.v("Message", "Scrolls Down");
                } else {
                    Log.v("Message", "Scrolls Up");
                }
                y = scrollView.getScrollY();
            }
        });