Как скрыть панель инструментов при прокрутке списка? (Так же, как в Google Play Store)

Хорошо, поэтому скрытие панели действий – это что-то выполнимое. Но как мы можем скрыть (новую) панель инструментов в нашей деятельности?

Я делаю приложение с активностью, имеющей тему в качестве theme.apcompat.light.noactionbar (чтобы скрыть панель действий), я разместил панель инструментов со скользящей таблицей ниже. И ниже это мой список.

Я хочу, чтобы скрыть панель инструментов, когда я просматриваю список. Но разворот должен оставаться там. И хотя в середине списка, если я прокручиваю вниз, панель инструментов снова должна быть видимой.

Обновлено (8/24/2015):

Пожалуйста, см. Мой последний ответ здесь, используя Design Support Library :

Скрытие ActionBar в RecyclerView / ListView onScroll

Обновлено (6/2/2015):

ListView + ToolBar – без библиотек:

См. https://stackoverflow.com/a/26547550/950427 и https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ Ui / BaseActivity.java .

 mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer); mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar); mToolbar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (Build.VERSION.SDK_INT >= 16) { mToolbar.getViewTreeObserver().removeOnGlobalLayoutListener(this); } else { mToolbar.getViewTreeObserver().removeGlobalOnLayoutListener(this); } mToolbar.animate().translationY(-mToolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start(); } }); 

От: http://pastebin.com/yeMX3VYP

ListView + ActionBar – без библиотек:

https://stackoverflow.com/a/17767691/950427

Мне недавно нужна была такая же функциональность, и это отлично работает для меня:

По мере того, как пользователь прокручивается вверх, ActionBar будет скрыт, чтобы дать пользователю работу всего экрана.

Когда пользователь прокручивается вниз и отпустит, ActionBar вернется.

 getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); listView.setOnScrollListener(new OnScrollListener() { int mLastFirstVisibleItem = 0; @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (view.getId() == listView.getId()) { final int currentFirstVisibleItem = listView.getFirstVisiblePosition(); if (currentFirstVisibleItem > mLastFirstVisibleItem) { // getSherlockActivity().getSupportActionBar().hide(); getSupportActionBar().hide(); } else if (currentFirstVisibleItem < mLastFirstVisibleItem) { // getSherlockActivity().getSupportActionBar().show(); getSupportActionBar().show(); } mLastFirstVisibleItem = currentFirstVisibleItem; } } }); 

Используйте следующий код:

 ViewCompat.setNestedScrollingEnabled(listView, true); 

Для recyclerView мне удалось это сделать так:

 public class FragmentsOnScrollListener extends RecyclerView.OnScrollListener { private final MainActivity mainActivity; private final View bothToolbarLayouts; private int approxToolbarHeight; public FragmentsOnScrollListener(MainActivity activity) { mainActivity = activity; bothToolbarLayouts = mainActivity.getBothToolbarLayouts(); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); approxToolbarHeight += dy; bothToolbarLayouts.animate().translationY(-approxToolbarHeight).setInterpolator(new AccelerateInterpolator()).start(); } }