10

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

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

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

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

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

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

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

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

+0

В чем проблема? –

+0

Невозможно реализовать вкладки панели действий во фрагменте, поскольку, как кажется, требуется активность активности или фрагмента ... –

+0

Хорошо, могу ли я спросить, почему вам нужны обе вкладки и ящик для навигации? –

ответ

6

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

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

Спасибо.

+1

Я понимаю эту концепцию, и она работает, когда мы реализуем активность или фрагмент, но как сделать эту работу над фрагментом, который находится в navigationdrawer ... –

+1

Я не хочу использовать actionbarsherlock, хочу использовать встроенные функции. .. спасибо вам –

+1

Пример, который вы дали, это то, что мне нужно, но я не хочу его использовать с помощью ActionBarSherlock. –

8

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

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

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

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

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

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

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

+0

решение @jiahao –

+0

Добро пожаловать! – jiahao

+0

спасибо jiahao, очень полезно. –

1

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

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

+0

Я был удивлен тем, что Google устарел на API 21. Есть еще много хорошего проекта, который его использует (например, Etsy). Посмотрим, как реагирует сообщество кодирования. История только началась. – jiahao

+0

код учебного примера на сайте разработчика Android по-прежнему использует NAVIGATION_MODE_TABS. И в игровом магазине Google появились панели вкладок? правильно? –

+0

Нет, последняя версия Google Play (5.1.11) использует скользящие вкладки в соответствии с моим примером (например, перейдите в «магазин приложений»). –

Смежные вопросы