как Показать / Скрыть 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);