it-swarm.com.ru

Получение DrawerLayout для скольжения по панели действий

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

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

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

Sliding menu under action bar tabs

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

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

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

Proper navigation with tabs sliding correctly

25
Archit

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

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

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

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

  • Форк DrawerLayout и измените его в соответствии с

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

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

Правильный .

11
CommonsWare

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

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

Я создал проект Навигационный ящик с примером Tab Tab на github, взгляните на него. 

Ниже скриншот этого.

Navigation-drawer-page-sliding-tab-strip

22
Balaji

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

3
alecnash

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

3
user2814778

Это можно сделать БЕЗ сторонней библиотеки. Ознакомьтесь с примерами 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/ Работал для меня как обаяние. :)

1
user3316561

Панель действий Navigaton Drawer и SwipeTabs не могут использоваться одновременно. Вы должны реализовать Navigation Drawer, используя Actionbar и swipetabs с помощью простых Tabhosts. Вы можете использовать Tabhost для вкладок и фрагменты для внутреннего просмотра каждой вкладки. Фрагменты должны использоваться через viewpager, чтобы обеспечить эффект прокрутки/смахивания. Соедините вкладки и 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>

0
FAK

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

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

в onDrawerClosed() и getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); в методе onDrawerOpend().

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

0
Jinal Rathod

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

0
tarn

Мне удалось выполнить это требование, установив навигационный режим внутри функций 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);              
                    ..

                    }

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

 getActionBar().removeAllTabs();
0
user2814778

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

0
xgc1986