Android ActionBar скрыть / показать при прокрутке в виде списка

? dorin @ | Original: StackOverFlow
---

Я хочу, чтобы скрыть / показать панель действий совместимость Как пользователь свитки вверх / внизListView. Когдапанель действий исчезаетсписок будет занимать также пространство панели действий в .

Я последовал за подход, но он генерирует мерзкое мерцание . Кто-нибудь есть правильное решение для этой проблемы? Желаемое поведение подобно скрыть / показать механизм в приложении Google+ ( я не интересуюсь о нижний) .

То, что я пытался представлена ​​ниже:

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 ответ

1Eduardo Varela G&#243;mez @

Чтобы избежать мерцания, вызванного перестройкой макета можно использовать покрывающий недвижимость в панели действий .

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

Но это решение вызывает то, чтопанель действий накладывает Ваше окно просмотра списков, так что вам нужно, чтобы добавить заголовок с этого размера :

"?android:attr/actionBarSize"

for example :

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

Будьте осторожны с другими элементами, такими как навигационной ящик, который также пострадавших от этого .

2Muatik @

Вы должны сделатьпанель действий перекрывает ListView. Делая это, вы обязаны управлять скрыть и показать панель действий в случае необходимости.

Существует, например, на следующей странице :  http://www.techrepublic.com/article/pro-tip-maximize-android-screen-real-estate-by-showing-and-hiding-the-action-bar/