Вкладки панели действий с помощью 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, чтобы добиться этого эффекта, не добавляя зависимость сторонней библиотеки, и я очень счастлив с результатом. Существует также видеоурок.