Кнопка наверх в android с использованием библиотеки ObservableScrollView

Рейтинг: 0Ответов: 1Опубликовано: 12.04.2015

В приложении очень много информации и чтоб оперативно подниматься вверх, решил добавить кнопку "вверх", но появилась проблема, эта кнопка видна всегда, а мне нужно, чтоб эта кнопка была скрыта вверху, но была видна тогда, когда мы чуть-чуть проскролим вниз.

Видел этот код, но он не подходит, так как кнопка исчезает всегда, когда скролю вниз и появляется, когда вверх, а мне нужно чтоб она всегда была видна внизу и исчезала в самом верху.

  @Override
    public void onUpOrCancelMotionEvent(ScrollState scrollState) {
        ActionBar ab = getSupportActionBar();
        if (scrollState == ScrollState.UP) {
            if (ab.isShowing()) {
                ab.hide();
            }
        } else if (scrollState == ScrollState.DOWN) {
            if (!ab.isShowing()) {
                ab.show();
            }
        }
    }

Ответы

▲ 1Принят

Для начала было бы неплохо указать , что используете библиотеку ObservableScrollView.

С помощью переопределения метода onUpOrCancelMotionEvent(ScrollState scrollState) вы не получите нужного эффекта , так как метод отрабатывает только состояния UP DOWN и STOP

Рекомендую переопределеить метод onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) и следить за первым параметром (scrollY) , когда он будет соответствовать началу списка - скрывать ActionBar , в других случаях - показывать .. Я не буду подключать эту библиотеку , чтобы узнать , какому значению scrollY соответствует начало списка , но предположу , что = 0 , тогда код может выглядеть как то так

@Override
    public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) {
    ActionBar ab = getSupportActionBar();
    if (scrollY == 0)  ab.hide();            
    else ab.show();            

}