Android ActionBar nascondi / mostra durante lo scorrimento della visualizzazione elenco

? dorin @ | Original: StackOverFlow
---

Voglio nascondere / mostrare la barra azione compatibilità come l'utente scorre su / giù un controllo ListView . Quando la barra azione scompare la lista occuperà anche lo spazio della barra delle operazioni .

Ho seguito un approccio ma genera un brutto sfarfallio . Qualcuno ha una soluzione adeguata a questo problema ? Il comportamento desiderato è come il meccanismo Mostra / Nascondi in app Google+ ( non mi interessa per il piè di pagina ) .

Quello che ho provato è il seguente :

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

Top 5 Risposta

1Eduardo Varela G&#243;mez @

Per evitare lo sfarfallio causato dal riaggiustamento del layout è possibile utilizzare la proprietà sovrapposizione nella barra delle azioni .

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

Ma questa soluzione fa sì che la barra delle azioni sovrappone tuo listview, quindi è necessario aggiungere un'intestazione con queste dimensioni :

"?android:attr/actionBarSize"

for example :

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

Siate cauti con altri elementi come il cassetto di navigazione che è influenzato anche da questo .

2Muatik @

Hai bisogno di fare la barra delle azioni si sovrappone alla listview . In questo modo si ha la responsabilità di gestire di nascondere e mostrare la barra delle operazioni in caso di necessità .

Vi è un esempio la pagina seguente :  http://www.techrepublic.com/article/pro-tip-maximize-android-screen-real-estate-by-showing-and-hiding-the-action-bar/