web-dev-qa-db-fra.com

Barre d'action Android masquer/afficher lors du défilement de la liste

Je souhaite masquer/afficher la barre d'actions de compatibilité lorsque l'utilisateur fait défiler une liste vers le haut ou le bas. Lorsque la barre d'action disparaît, la liste occupe également l'espace de la barre d'action.

J'ai suivi une approche mais elle génère un scintillement moche. Quelqu'un at-il une solution adéquate à ce problème? Le comportement souhaité ressemble au mécanisme d'affichage/masquage de l'application Google+ (le pied de page ne m'intéresse pas).

Ce que j'ai essayé est présenté ci-dessous:

boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
    if (!tabletSize) {
        final ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
        lvNews.setOnScrollListener(new AbsListView.OnScrollListener() {
            private int mLastFirstVisibleItem;

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                                 int visibleItemCount, int totalItemCount) {

                if (mLastFirstVisibleItem < firstVisibleItem) {
                    if (actionBar.isShowing()) {
                        actionBar.hide();
                    }
                }

                if (mLastFirstVisibleItem > firstVisibleItem) {
                    if (!actionBar.isShowing()) {
                        actionBar.show();
                    }
                }
                mLastFirstVisibleItem = firstVisibleItem;
            }
        });
    }
14
dorin

Pour éviter le scintillement causé par le réajustement de la présentation, vous pouvez utiliser la propriété de superposition dans la barre d'actions. 

https://developer.Android.com/training/basics/actionbar/overlaying.html

Mais cette solution fait en sorte que la barre d’action recouvre votre liste d’affichage, vous devez donc ajouter un en-tête de cette taille:

"?android:attr/actionBarSize"

par exemple :

mVideosListView = (ListView) getActivity().findViewById(Android.R.id.list);
mVideosListView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.listview_header,null));

Faites attention avec d'autres éléments comme le tiroir de navigation, qui est également affecté par cela.

5

Vous devez faire en sorte que la barre d’action recouvre la vue en liste. Ce faisant, vous avez la responsabilité de gérer la dissimulation et de montrer la barre d’action lorsque cela est nécessaire. 

Vous trouverez un exemple à la page suivante: http://www.techrepublic.com/article/pro-tip-maximize-Android-screen-real-estate-by-showing-and-hiding-the- barre d'action/

3
Muatik

vous pouvez essayer cette bibliothèque. J'espère que ça aide https://github.com/ksoichiro/Android-ObservableScrollView

2
TibiG

Voir ma réponse sur ce lien: Comment masquer et afficher le ActionBar Android comme dans l'application Google Inbox? J'utilise RecyclerView mais l'idée est la même

0
Luciano Marqueto