Вопрос по android-viewpager, android – Как реализовать пролистывание между вкладками на Android?

26

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

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

Ваш Ответ

2   ответа
34

NOTE: Это выдержка изОбучение Android учебный классРеализация эффективной навигации.

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

Наблюдая за изменением текущей страницы, выберите соответствующую вкладку. Вы можете настроить это поведение, используя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 уровня 13 и выше, вам следует выбрать android-support-v13.jar. Он содержит android.support.v13.app.FragmentPagerAdapter, который не зависит от поддержки фрагментов и операций, но может использоваться с & quot; real & quot; вещь.
Вы должны задать это как новый вопрос. Roman Nurik
Странные вещи случаются, если вы добавляете значки меню на панель действий и используете ViewPager таким образом ...
Здравствуйте, Роман! Пожалуйста, разработайте пример, который реализует ant адаптер для реализации смахивания многопанельных макетов, содержащих несколько динамически создаваемых / заменяемых фрагментов. Проблемы: - FragmentManager использует идентификатор ресурса для добавления фрагментов; Идентификаторы должны быть уникальными на всех страницах (нельзя указывать экземпляр ViewGroup в качестве контейнера). - Виды контейнера должны существовать до того, как FragmentManager попытается восстановить фрагменты. - Сохраненные экземпляры и ошибка изменения ориентации # 1: NullPointerException вокруг, когда FragmentManager пытается сохранить состояние фрагмента; # 2: исключение NullPointerException для LoaderInfo.onLoadComplete
12

вы не можете использовать вышеупомянутое решение Романа.

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

Привет ccpizza, почему вы сказали "Проект должен быть построен с использованием API 14 или выше (т.е. Android 4+)" это необходимо?
@ JesperB - На самом деле я уже сделал приложение с tabview прекрасно работающим ... Мне просто нужно обновить функцию Swipe !!
Можно использовать решение для более ранних версий, если добавить библиотеку поддержки совместимости Androiddeveloper.android.com/tools/extras/support-library.html, С последним плагином Eclipse ADT это так же просто, как щелкнуть правой кнопкой мыши по проекту и выбратьAndroid Tools & GT;Add Support Library, Проект должен быть построен с использованием API 14 или выше (т. Е. Android 4+) при использовании манифеста, например, с. `& lt; использует -sdk android: minSdkVersion = & quot; 7 & quot; & gt;` для запуска на android 2.1.
@ JesperB - Что делать, если мне нужно реализовать Swipe среди вкладок в моем TabHost для API-приложений для таргетинга на Android под Android 2.3.3 и без использования ActionBarSherlock .. ?? Можете ли вы предложить мне что-нибудь для этого .. ??

Похожие вопросы