J'ai une activité avec la disposition du coordinateur. À l'intérieur de l'activité, il y a un fragment avec la vue Recycler et le bouton flottant.Comment puis-je afficher / masquer le bouton flottant lorsque Scroll Recycler affiche et éviter d'utiliser le comportement fab?!

Dans la présentation de l'activité: CoordinatorLayout -----> AppBarLayout ----> Barre d'outils et FrameLayout et vue de la barre inférieure

Dans la mise en page des fragments: RelativeLayout ----> Vue Recycler et bouton flottant

Je souhaite mettre en œuvre quelque chose comme la page d'accueil Google+. comment puis-je implémenter ce scénario?


Temporairement j'ai utilisé cette solution pour mon problème:

En utilisant la disposition du coordinateur de l'activité par interface dans mon fragment et afficher / masquer fab avec un comportement fab ... jusqu'à ce que je trouve une meilleure solution !!!

7
Zahra.HY 17 janv. 2017 à 17:02

2 réponses

Meilleure réponse

Ce code fonctionne très bien:

 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);
                }
            });

Tu ne peux pas faire:

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

Regardez ici:

Il n'y a pas de support intégré pour que CoordinatorLayout fonctionne avec ListView d'après ce post Google.

25
Willi Mentzel 25 août 2018 à 08:55

J'ai modifié la méthode de Leondro pour que le FAB se cache lorsqu'il y a un défilement et s'affiche lorsque le défilement s'arrête.

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);
5
Angel Koh 23 mars 2017 à 03:59