Получение DrawerLayout для перемещения по ActionBar
У меня есть скользящее меню ящика в действии, в котором есть панель действий с некоторыми вкладками.
Я бы хотел, чтобы скользящий ящик скользил по вкладкам, а не под ними.
Вот как это выглядит прямо сейчас...
![Sliding menu under action bar tabs]()
Любые идеи о том, как это можно сделать?
Примечание. Я понимаю, что я мог бы нарушать некоторые условные обозначения и шаблоны пользовательского интерфейса здесь, и если он вообще не работает, я рассмотрю альтернативы. Но я хотел бы сначала начать эту работу.
РЕДАКТИРОВАТЬ:. См. снимок экрана приложения Google Play Music, который делает именно то, что мне нужно. См. Ниже @CommonsWare, где он согласен с тем, что я могу нарушить соглашение. Но затем, учитывая приложение Play Music, это может быть совсем не так редко.
![Proper navigation with tabs sliding correctly]()
Ответы
Ответ 1
Любые идеи о том, как это можно сделать?
Выполните одно из следующих действий:
-
Отключите вкладки панели действий, возможно, до ViewPager
и индикатор с вкладками (PagerTabStrip
, TabPageIndicator
из ViewPageIndicator)
-
Посмотрите, не изменилась ли существующая реализация стороннего ящика на новые стандарты пользовательского интерфейса.
-
Fork DrawerLayout
и измените его в соответствии с
-
Сбросьте свой собственный ящик для навигации с нуля
Я понимаю, что я мог бы нарушать некоторые соглашения и шаблоны пользовательских интерфейсов здесь.
Правильно.
Ответ 2
вы можете использовать библиотеки ниже, чтобы получить навигационную модель, похожую на приложение для воспроизведения музыки Google.
- ActionBarSherlock (github)
- вложенные фрагменты (github)
- PagerSlidingTabStrip (github)
- NavigationDrawer (сайт разработчика Android)
- Последняя поддержка v4-библиотеки
Я создал проект "Навигационный ящик с примером вкладки" в github, посмотрите на него.
Ниже приведен снимок экрана.
![Navigation-drawer-page-sliding-tab-strip]()
Ответ 3
Также проверьте эту библиотеку http://www.androidviews.net/2013/04/pager-sliding-tabstrip/
Парень отлично поработал. Вы можете использовать его с навигационным ящиком, и он отлично работает.
Ответ 4
Наконец, чистый способ получить навигационный ящик над скользящими вкладками в этом блоге
http://www.paulusworld.com/technical/android-navigationdrawer-sliding-tabs
Ответ 5
Это можно сделать БЕЗ сторонней библиотеки. Ознакомьтесь с образцами 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/
Работала для меня как шарм.:)
Ответ 6
У меня была та же проблема, но единственным решением, которое я нашел, было использование вкладок внутри внутреннего фрагмента (а не фрагмента). Я не знаю, было ли это лучшее решение, единственная проблема, с которой я столкнулся, - это укладка этих вкладок, для остальных это прекрасно работает
Ответ 7
Мне удалось достичь этого требования, установив режим навигации в функциях 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();
Ответ 8
Панель действий 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>
Ответ 9
Воспроизведение музыки не использует стандартный ActionBar.Tab
Затем вы можете реализовать свой собственный контейнер табуляции, расширив HorizontalScrollView
и работать вместе с ViewPager
Ответ 10
У меня есть вкладки внутри фрагмента ящика.
Я решаю эту проблему, добавляя
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
в onDrawerClosed()
и getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
в onDrawerOpend()
.
Надеюсь, это поможет вам.