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

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

Я могу создать пример ящика навигации

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

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

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

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

Я могу создать навигационный ящик с помощью фрагментов и вкладок панели действий с помощью фрагмента. Но начальная активность обоих примеров - это Фрагментная активность.

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

Ответ 1

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

<?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.

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

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

ИЛИ

Вы можете получить помощь от этого GitHub Repo.

Спасибо.

Ответ 2

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

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

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

Вот небольшое объяснение:

  • На первом уровне находится ящик из библиотеки поддержки v4
  • Внутри ящика первый элемент - tabHost, который я установил ширину и высоту содержимого в 0.
  • Под вкладкой есть просмотрщик.

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

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

Ответ 3

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

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