У меня есть linearLayout и scrollView в моей деятельности. Я хочу сделать следующее: когда я прокручу вниз - скройте linearLayout и когда я прокручу вверх - покажу это. Я прочитал This article, и я пытаюсь сделать ложь, но onScrollChanged называется все время, когда я нажимаю палец на экран, и это плохое решение, как я думаю.Скрыть вид, когда scrollViews прокручивается вниз
Тогда я пытаюсь сделать следующий:
public class CustomScrollView extends ScrollView {
Context context;
public void setContext(Context c) {
this.context = c;
}
public CustomScrollView(Context context) {
super(context);
}
public CustomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
Log.d("myLogs", "Down ");
hidePanel();
break;
case MotionEvent.ACTION_UP:
Log.d("myLogs", "Up ");
showPanel();
break;
}
return super.onTouchEvent(ev);
}
}
Но горю не работал правильно, когда я двигаю прокрутки вверх - я получить вверх вверх вниз ЭСТ.
Я буду рад за любые идеи, как сделать это
Отредактировано: Стараюсь:
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_MOVE:
final int threashold = 70;
if (mLastY - ev.getY() > threashold) {
Log.v("teste", "moving up");
mLastY = ev.getY();
} else if (mLastY - ev.getY() < -threashold) {
Log.v("teste", "moving down");
mLastY = ev.getY();
}
}
return super.onTouchEvent(ev);
}
Когда я прокручивать вверх я получил:
09-24 20:22:04.568 497-497/khuta.freeturn V/teste﹕ moving down
09-24 20:22:04.668 497-497/khuta.freeturn V/teste﹕ moving up
09-24 20:22:04.688 497-497/khuta.freeturn V/teste﹕ moving up
Когда я прокрутите вниз я получил:
09-24 20:24:44.559 497-497/khuta.freeturn V/teste﹕ moving up
09-24 20:24:44.719 497-497/khuta.freeturn V/teste﹕ moving down
09-24 20:24:44.809 497-497/khuta.freeturn V/teste﹕ moving down
Как мы должны знать, как выглядит ваш макет? –
не имеет значения для этой ситуации. –
Если вы так говорите ... Я не знаю, как выглядит ваш макет, поэтому я не могу сказать вам, как скрыть линейный вывод, который я даже не знаю, находится ли он внутри scrollview или снаружи. Но если вы собираетесь использовать onTouchEvent, убедитесь, что вы сохранили свою позицию y в Action_down и по сравнению с action_move и проверьте, прокручиваете ли вы вверх или вниз. –