Dans une activité, un menu à tiroirs coulissants comporte une barre d’action avec des onglets.
J'aimerais que le tiroir coulissant glisse sur les languettes, pas en dessous.
Voici à quoi cela ressemble en ce moment ...
Des idées sur la façon dont cela pourrait être fait?
Remarque: Je comprends que je vais peut-être enfreindre certaines conventions et certains modèles d'interface utilisateur. Si cela ne fonctionne pas du tout, j'examinerai d'autres solutions. Mais j'aimerais que cela fonctionne en premier.
EDIT: Voir la capture d'écran ci-dessous de l'application Google Play Music qui répond exactement à mes besoins. Voir la réponse de @ CommonsWare ci-dessous, où il convient que je pourrais enfreindre la convention. Mais étant donné l'application Play Music, il se peut que ce ne soit pas tout à fait aussi rare.
Des idées sur la façon dont cela pourrait être fait?
Faites l'une des choses suivantes:
Abandonnez les onglets de la barre d'action, éventuellement vers ViewPager
et un indicateur à onglets (PagerTabStrip
, TabPageIndicator
de ViewPageIndicator)
Vérifier si une implémentation de tiroir tiers existante n'a pas encore été mise à jour vers les nouvelles normes d'interface utilisateur
Fork DrawerLayout
et le modifier pour l'adapter
Rouler votre propre tiroir de navigation à partir de zéro
Je comprends que je vais peut-être enfreindre certaines conventions et modèles d'interface utilisateur ici.
Correct .
vous pouvez utiliser les bibliothèques ci-dessous pour obtenir un modèle de navigation similaire à celui de l'application Google Play Music.
J'ai créé un projet Navigation Drawer with Tab Strip Example sur github, regardez-le.
Ci-dessous est la capture d'écran de celui-ci.
Vérifiez également cette bibliothèque http://www.androidviews.net/2013/04/pager-sliding-tabstrip/ Le gars a fait un excellent travail. Vous pouvez l'utiliser avec un tiroir de navigation et cela fonctionne parfaitement.
Enfin, une façon propre d’atteindre le tiroir de navigation sur les onglets coulissants de ce blog http://www.paulusworld.com/technical/Android-navigationdrawer-sliding-tabs
Cela peut être fait SANS une bibliothèque tierce. Consultez les exemples d'onglets coulissants de Google.
SlidingTabsBasic: http://developer.Android.com/samples/SlidingTabsBasic/project.html
SlidingTabsColors: http://developer.Android.com/samples/SlidingTabsColors/project.html
Aussi, consultez ce lien génial: http://manishkpr.webheavens.com/Android-sliding-tabs-example/ A travaillé comme un charme pour moi :)
Actionbar Navigaton Drawer et SwipeTabs ne peuvent pas être utilisés simultanément. Vous devez implémenter Navigation Drawer en utilisant Actionbar et swipetabs par Tabhosts. Vous pouvez utiliser Tabhost pour les onglets et utiliser des fragments pour la vue interne de chaque onglet. Les fragments doivent être utilisés via viewpager pour fournir un effet de défilement/balayage. Reliez les onglets et le viewpager avec leurs méthodes
<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>
J'ai utiliser des onglets à l'intérieur du fragment de tiroir ..__ Je résous ce problème
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
dans onDrawerClosed()
et getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
dans onDrawerOpend()
, méthode.
J'espère que cela t'aidera.
Écouter de la musique n'utilise pas ActionBar.Tab .__ standard. Ensuite, vous pouvez implémenter votre propre conteneur d'onglets en étendant HorizontalScrollView Et en travaillant avec ViewPager.
J'ai réussi à répondre à cette exigence en définissant le mode de navigation dans les fonctions OnDrawerClosed et onDrawerOpened. C'est un correctif temporaire puisque les onglets ne disparaissent pas immédiatement.
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);
..
}
Si vous avez des fragments avec des onglets, et d'autres sans, n'oubliez pas de supprimer les onglets onCreateView du fragment qui n'a pas d'onglets.
getActionBar().removeAllTabs();
J'ai eu le même problème, mais la seule solution que j'ai trouvée consistait à utiliser des onglets à l'intérieur du fragment interne (pas fragmentActivity). Je ne sais pas si c'était la meilleure solution, le seul problème que j'avais était de coiffer ces onglets, pour le reste, ça fonctionne parfaitement