Вкладки панели действий с использованием ViewPager с навигационным ящиком

Требование: - Вкладки панели действий с использованием ViewPager с навигационным ящиком.

Я могу создать пример Navigation Drawer

http://www.omgubuntu.co.uk/wp-content/uploads/2013/07/sidebar.jpg

Вкладки панели действий с использованием ViewPager отдельно.

http://developer.android.com/design/media/action_bar_pattern_considerations.png

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

Я могу создать Navigation Drawer, используя фрагменты, и вкладки панели действий, используя Fragment. Но начальная активность обоих примеров — это активность фрагмента.

Как реализовать вкладки панели действий на фрагменте, который является частью панели навигации?


person Community    schedule 26.12.2013    source источник
comment
В чем проблема?   -  person Alex Curran    schedule 26.12.2013
comment
Невозможно реализовать вкладки панели действий во фрагменте, поскольку, похоже, требуется действие или действие фрагмента...   -  person    schedule 26.12.2013
comment
Хорошо, могу я спросить, зачем вам нужны и вкладки, и навигационный ящик?   -  person Alex Curran    schedule 26.12.2013
comment
да, я хочу перейти к экранам подуровня с главного экрана с помощью NavigationDrawer, а оттуда с помощью вкладок, чтобы показать многоуровневый...   -  person    schedule 26.12.2013
comment
@ chakradharg13 ты нашел решение, я застрял в том же... ты можешь помочь?   -  person    schedule 23.01.2015


Ответы (3)


Используйте следующий макет для своей основной деятельности.

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager_container"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#ffe6e1d4"
        android:focusable="true"
        android:focusableInTouchMode="true" />    

    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:listSelector="@drawable/drawer_list_selector"        
        android:background="@color/drawer_bg" />

</android.support.v4.widget.DrawerLayout>

Напишите свой FragmentPagerAdapter, как показано в APPTabsAdapter.

Вот как я построил это в одном из моих проектов.

Вы можете попробовать и попросить о помощи, если это необходимо.

OR

Вы можете воспользоваться помощью этого репозитория GitHub.

Спасибо.

person jagmohan    schedule 26.12.2013
comment
Я понимаю эту концепцию, и она работает, когда мы реализуем действие или фрагмент, но как заставить это работать с фрагментом, который находится в навигационном ящике... - person ; 26.12.2013
comment
Я не хочу использовать actionbarsherlock, хочу использовать встроенные функции... спасибо - person ; 26.12.2013
comment
приведенный вами пример - это то, что мне нужно, но я не хочу, чтобы он использовал ActionBarSherlock. - person ; 26.12.2013
comment
Пожалуйста, проверьте новое решение, которое вы приняли на Android 2.2. - person jagmohan; 23.06.2014
comment
оба решения хороши... но ваш ответ помог мне, когда мне это было нужно. Спасибо друг! - person ; 24.06.2014
comment
Рад помочь! - person jagmohan; 24.06.2014
comment
@jagmohan Я застрял в том же, но все еще не могу найти решение, вы можете помочь? - person ; 23.01.2015
comment
@Johnson Вы смотрели на панель инструментов, которая доступна в Android SDK 5.0? Было бы намного проще иметь Navigation Drawer, Toolbar + ViewPager с вкладками. Я недавно сделал это в проекте. Если вы можете подождать, я могу сделать сообщение в блоге на выходных и поделиться с вами ссылкой. - person jagmohan; 23.01.2015
comment
@jagmohan спасибо, я подожду .. надеюсь, вы не забудете .. и вы можете проверить это .. это та же проблема, с которой я столкнулся, можете ли вы помочь мне с этим ??stackoverflow.com/questions/26483069/ - person ; 23.01.2015
comment
@jagmohan можете рассказать stackoverflow. ком/вопросы/31114379/ - person Aditya; 29.06.2015
comment
@jagmohan Ты сказал, что придумаешь свой пост в блоге. Можете ли вы предоставить ссылку? Я ищу помощь в Navigation Drawer, Toolbar + ViewPager уже 3 дня. Пожалуйста помоги - person GreenROBO; 17.08.2015

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

Вместо этого я попытался использовать tabHost, и он работает намного лучше.

Вы можете получить исходный код здесь: https://github.com/jiahaoliuliu/DrawerWithTabsAndViewPager

Вот небольшое пояснение по этому поводу:

  1. Первый уровень — ящик, из библиотеки поддержки v4
  2. Внутри ящика первым элементом является tabHost, для которого я установил ширину и высоту содержимого равными 0.
  3. Под tabhost есть viewpager.

После того, как все было создано, я создал прослушиватель для tabhost и еще один для viewPager, поэтому, когда пользователь нажимает на любую вкладку, пейджер просмотра устанавливает текущий элемент и наоборот.

Наслаждайтесь кодированием!

person jiahao    schedule 22.06.2014
comment
Другим решением могут быть скользящие вкладки (youtube.com/watch?v=tRg_eDfQ8fk), просто как Google для своего приложения Play Store. Что мне не нравится, так это когда вкладка не полностью заполняет экран, она кажется немного зашитой (wrap_content вместо match_parent). - person jiahao; 09.02.2015
comment
помогите мне с stackoverflow.com/ вопросы/31114379/ - person Aditya; 29.06.2015

Как вы заметили, вкладки ActionBar не очень хорошо работают с Navigation Drawer и этим режимом разработки устарело в API 21.

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

person Tim Rae    schedule 22.10.2014
comment
Я был удивлен, что Google устарел в API 21. Есть еще много хороших проектов, которые его используют (например, Etsy). Посмотрим, как отреагирует сообщество программистов. История только началась. - person jiahao; 23.10.2014
comment
код обучающего примера на сайте разработчика Android по-прежнему использует NAVIGATION_MODE_TABS. А магазин Google Play, похоже, использует вкладки на панели действий? правильно? - person liam xu; 20.01.2015
comment
Нет, в последней версии Google Play (5.1.11) используются скользящие вкладки, как в моем примере (например, переход к магазину приложений). - person Tim Rae; 20.01.2015