как Показать / Скрыть FAB на scroll Recycler view с родительским координатором

У меня есть деятельность с координатором.внутри активности есть фрагмент с видом Recycler и кнопкой float.как я могу показать / скрыть кнопку float при прокрутке Recycler view и избежать использования fab-поведения?!

в макете активности: CoordinatorLayout---- - >AppBarLayout - - - - >панель инструментов и FrameLayout и вид нижней панели

в макет фрагмента : RelativeLayout - - - - >вид рециркулятора и кнопка поплавка

Я хочу реализовать что-то вроде домашней страницы Google+. как реализовать этот сценарий?


временно я использовал это решение для моей проблемы:

использование координатора макета активности по интерфейсу в моем фрагменте и показать / скрыть fab с fab поведением ... пока не найду лучшего решения!!!

2 ответов


этот код прекрасно работает:

 mRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                    if(dy > 0){
                        mFab.hide();
                    } else{
                        mFab.show();
                    }

                    super.onScrolled(recyclerView, dx, dy);
                }
            });

нельзя:

app:layout_anchor="@id/listView"
app:layout_anchorGravity="bottom|end"

посмотреть здесь:

нет встроенной поддержки для CoordinatorLayout для работы с ListView в соответствии с это сообщение Google.


Я изменил метод Леондро так, что FAB будет скрываться, когда есть прокрутка и показывать, когда прокрутка останавливается.

scrollListener = new RecyclerView.OnScrollListener() {  
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        switch (newState) {
            case RecyclerView.SCROLL_STATE_IDLE:
                fab.show();
                break;
            default:
                fab.hide();
                break;
        }
        super.onScrollStateChanged(recyclerView, newState);
    }
}; 

rv.clearOnScrollListeners();
rv.addOnScrollListener(scrollListener);