检测滚动视图是向上滚动还是向下滚动-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();
}
});