Получение DrawerLayout для перемещения по ActionBar

У меня есть скользящее меню ящика в действии, в котором есть панель действий с некоторыми вкладками.

Я бы хотел, чтобы скользящий ящик скользил по вкладкам, а не под ними.

Вот как это выглядит прямо сейчас …

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

Любые идеи о том, как это можно сделать?

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

EDIT: см. Приведенный ниже снимок экрана приложения Google Play Музыка, которое делает именно то, что мне нужно. См. Ответ @ CommonsWare ниже, где он согласен с тем, что я могу нарушить соглашение. Но затем, учитывая приложение Play Music, оно может быть совсем не столь редким.

Правильная навигация со скользящими язычками

Solutions Collecting From Web of "Получение DrawerLayout для перемещения по ActionBar"

Любые идеи о том, как это можно сделать?

Выполните одно из следующих действий:

  • Отключитесь от вкладок панели действий, возможно, к ViewPager и индикатору с вкладками ( PagerTabStrip , TabPageIndicator из ViewPageIndicator)

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

  • DrawerLayout и изменить его в соответствии с

  • Сбросьте свой собственный ящик навигации с нуля

Я понимаю, что я мог бы нарушать некоторые соглашения и шаблоны пользовательского интерфейса здесь

Правильно .

Вы можете использовать библиотеки ниже, чтобы получить навигационную модель, похожую на приложение для воспроизведения музыки Google.

  • ActionBarSherlock (github)
  • Вложенные фрагменты (github)
  • PagerSlidingTabStrip (github)
  • NavigationDrawer (сайт разработчика Android)
  • Последняя поддержка v4 library

Я создал проект Navigation Drawer с примером Tab Strip в github, взгляните на него.

Ниже приведен снимок экрана.

Навигационно-ящик-страницы раздвижных закладки полоса

Проверьте также эту библиотеку http://www.androidviews.net/2013/04/pager-sliding-tabstrip/ Этот парень отлично поработал. Вы можете использовать его с навигационным ящиком, и он отлично работает.

Наконец, чистый способ получить навигационный ящик над скользящими вкладками в этом блоге http://www.paulusworld.com/technical/android-navigationdrawer-sliding-tabs

Это можно сделать БЕЗ сторонней библиотеки. Ознакомьтесь с образцами Google Sliding Tabs

  SlidingTabsBasic: http://developer.android.com/samples/SlidingTabsBasic/project.html SlidingTabsColors: http://developer.android.com/samples/SlidingTabsColors/project.html 

Кроме того, ознакомьтесь с этой замечательной ссылкой: http://manishkpr.webheavens.com/android-sliding-tabs-example/ Работали как прелесть для меня. 🙂

У меня была та же проблема, но единственным решением, которое я нашел, было использование вкладок внутри внутреннего фрагмента (а не фрагмента). Я не знаю, было ли это лучшее решение, единственная проблема, с которой я столкнулся, – это укладка этих вкладок, для остальных это прекрасно работает

Мне удалось выполнить это требование, установив режим навигации в функциях OnDrawerClosed и onDrawerOpened. Это временное исправление, так как вкладки фактически не исчезают немедленно.

  public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); if(getActionBar().getTabCount()>0) //Add tabs when the fragment has it getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ... } 

  public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); .. } 

Если у вас есть фрагменты с вкладками и другие без него, не забудьте удалить вкладки onCreateView фрагмента, у которого нет вкладок.

  getActionBar().removeAllTabs(); 

Панель действий Navigaton Drawer и SwipeTabs могут использоваться одновременно. Вы должны реализовать навигационный ящик с помощью Actionbar и swipetabs с помощью простых Tabhosts. Вы можете использовать Tabhost для вкладок и использовать фрагменты для внутреннего вида каждой вкладки. Фрагменты должны использоваться через viewpager для обеспечения эффекта прокрутки / прокрутки. Соединяйте вкладки и просмотрщик с помощью друг друга через свои методы

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabHost android:id="@+id/tabHost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <HorizontalScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:fillViewport="true" android:scrollbars="none" > <TabWidget android:id="@android:id/tabs" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TabWidget> </HorizontalScrollView> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/viewPager_home" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </LinearLayout> </TabHost> 

Воспроизведение музыки не использует стандартный ActionBar.Tab. Затем вы можете реализовать свой собственный табулятор, расширяя HorizontalScrollView и работать вместе с ViewPager

У меня есть вкладки внутри фрагмента ящика. Я решаю эту проблему, добавляя

 getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

В onDrawerClosed() и getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); В onDrawerOpend() .

Я надеюсь, что это поможет вам.