Android ActionBar Скрыть / показать при прокрутке списка
Я хочу Скрыть / Показать панель действий совместимости, когда пользователь прокручивает вверх / вниз listview. Когда панель действий исчезнет, список будет занимать также пространство панели действий.
я следовал подходу, но он генерирует уродливое мерцание. Есть ли у кого решение этой проблемы? Желаемое поведение похоже на механизм hide/show в приложении 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;
}
});
}
4 ответов
чтобы избежать мерцания, вызванного корректировкой макета, можно использовать свойство overlaying в панели действий.
https://developer.android.com/training/basics/actionbar/overlaying.html
но это решение приводит к тому, что панель действий накладывается на ваш listview, поэтому вам нужно добавить заголовок такого размера:
"?android:attr/actionBarSize"
например :
mVideosListView = (ListView) getActivity().findViewById(android.R.id.list);
mVideosListView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.listview_header,null));
будьте осторожны с другими элементами, такими как навигация ящик который также повлиян на этим.
вам нужно сделать панель действий накладывается на listview. Делая это, вы несете ответственность за управление скрытием и показом панели действий, когда это необходимо.
пример приведен на следующей странице: http://www.techrepublic.com/article/pro-tip-maximize-android-screen-real-estate-by-showing-and-hiding-the-action-bar/
вы можете попробовать эту библиотеку. Надеюсь, это поможет https://github.com/ksoichiro/Android-ObservableScrollView
смотрите мой ответ по этой ссылке: Как скрыть и показать панель действий Android, как в приложении Google Inbox? Я использую RecyclerView, но идея та же