Как реализовать прокрутку между вкладками на Android?

Одна из ключевых рекомендаций по дизайну в Android 4.0 для вкладок – позволить прокручивать между ними, где это необходимо. Такое поведение позволяет пользователям перемещаться по горизонтали по содержимому выбранной вкладки, чтобы перейти к смежным вкладкам, без необходимости прямого взаимодействия с вкладками.

Как это можно реализовать?

Solutions Collecting From Web of "Как реализовать прокрутку между вкладками на Android?"

ПРИМЕЧАНИЕ . Это отрывок из учебного курса Android « Эффективная навигация» .


Чтобы реализовать это (в Android 3.0 или выше), вы можете использовать ViewPager в сочетании с API вкладок ActionBar .

После просмотра текущей страницы выберите соответствующую вкладку. Вы можете настроить это поведение, используя ViewPager.OnPageChangeListener в onCreate() вашей активности:

 @Override public void onCreate(Bundle savedInstanceState) { ... mViewPager.setOnPageChangeListener( new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { // When swiping between pages, select the // corresponding tab. getActionBar().setSelectedNavigationItem(position); } }); ... } 

А после выбора вкладки перейдите на соответствующую страницу в ViewPager . Чтобы сделать это, добавьте ActionBar.TabListener на свою вкладку при ее создании с помощью newTab() :

 actionBar.newTab() ... .setTabListener(new ActionBar.TabListener() { public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { // When the tab is selected, switch to the // corresponding page in the ViewPager. mViewPager.setCurrentItem(tab.getPosition()); } ... })); 

Если вы ориентируетесь на API ниже Android 3.0, вы не можете использовать решение Романа выше.

Я написал сообщение в блоге о том, как сделать то же самое с ActionBarSherlock, если кому-то это интересно.