Как скрыть Float Action Button при скролле ListView

442
14 января 2017, 12:05

Пробовал с CoordinatorLayout как в этом туториале но не сработало. Мне кажется это из за того что у меня ListView находится внутри SwipyRefreshLayout

Погуглил, но везде говорится только о RecyclerView либо ListView без обертки.

Вопрос: Как все таки скрыть/показать FAB если ListView в обертке?

Answer 1

Я добился этого добавлением листенера к лв. Вот пример:

listView.setOnScrollListener(new OnScrollListener() {    
        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            if (scrollState == SCROLL_STATE_IDLE){
                fab.animate().scaleX(1f).scalY(1f).start();
                flag = true;
            }           
        }
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            if (flag){
                fab.animate().scaleX(0f).scalY(0f).start();
                flag = false;
            }
        }
    });

Вот кстати отличная библиотека облегчающая работу с тачивентами.

Answer 2

Для ListView, видимо, нет значений проскроленных пикселей. Засим приведённое ниже решение подойдёт только для RecyclerView.

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        if (dy > 0 || dy < 0 && mSearchFAB.isShown()) {
            mSearchFAB.hide();
        }
    }
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        if (newState == RecyclerView.SCROLL_STATE_IDLE) {
            mSearchFAB.show();
        }
        super.onScrollStateChanged(recyclerView, newState);
    }
});
READ ALSO
Опять по работе с ресурсами в Java

Опять по работе с ресурсами в Java

Есть проект со структурой

315
Регулярные выражения Java Regex

Регулярные выражения Java Regex

Задание:Написать регулярное выражение, определяющее является ли данная строка GUID с или без скобокГде GUID это строчка, состоящая из 8, 4, 4, 4, 12 шестнадцатеричных...

409
Что такое ArrayList&lt;&gt; в Java

Что такое ArrayList<> в Java

Одно из условий задачи: В классе Cat добавь public статическую переменную cats (ArrayList<Cat>)Я это понимаю вот так:

623