我有一个带有一个LinearLayout
和若干个TextView
的ScrollView
。我想要检测ScrollView
向上或向下滚动以隐藏/显示ActionBar
。
我有一个带有一个LinearLayout
和若干个TextView
的ScrollView
。我想要检测ScrollView
向上或向下滚动以隐藏/显示ActionBar
。
ScrollView
的类。public class ExampleScrollView extends ScrollView
接下来重写onScrollChanged
方法,该方法会返回旧的和新的滚动位置,然后您可以从中检测出滚动的方向。
protected void onScrollChanged(int l, int t, int oldl, int oldt)
com.my.app.ExampleScrollView
- tyczj请看这个
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.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();
}
});
scroll.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
int x = scrollY - oldScrollY;
if (x > 0) {
//scroll up
} else if (x < 0) {
//scroll down
} else {
}
}
});