2012-08-31 3 views
2

J'ai une application qui utilise ActionBarSherlock pour fournir un contrôle ViewPager pour la navigation par tabulation, ainsi qu'un ActionBar standard. Tout fonctionne correctement, sauf que lorsque j'utilise une vue ActionBar personnalisée, la barre d'action déplace sa position sous les contrôles de tabulation.Utilisation d'ABS ViewPager avec une vue ActionBar personnalisée

Lorsque vous utilisez un ActionBar standard (pas de vue personnalisée), tout fonctionne comme prévu:

enter image description here

Cependant, quand je passe ActionBar utiliser une vue personnalisée (avec aucun autre changement de code que ce soit), la barre d'action passe en dessous des commandes de l'onglet:

enter image description here

est-il une raison particulière pour ce? Est-ce que je peux faire quelque chose pour utiliser une vue de barre d'action personnalisée, mais toujours disposée avec la barre d'action au-dessus des onglets? Toutes les mises en page XML utilisées dans cet exemple sont extrêmement simples, comme indiqué dans le code ci-dessous. J'utilise ActionBarSherlock 4.1.0 (à la date d'écriture, la dernière version stable). Ce problème se produit sur Android 2.2 (la première version prise en charge) et Android 4.1.

ABS Mon code d'initialisation:

setContentView(R.layout.main); // XML layout that currently contains only the ViewPager 
mViewPager = (ViewPager) findViewById(R.id.viewPager); 

// Set up action bar 
ActionBar ab = getSupportActionBar(); 
Drawable gd = getResources().getDrawable(R.drawable.actionbar_bg); // Background gradient 
ab.setBackgroundDrawable(gd); 
ab.setCustomView(R.layout.actionbar_custom); // For this example, contains just a TextView 
ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

// Set up tabs 
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
mTabsAdapter = new TabsAdapter(this, mViewPager); 
mTabsAdapter.addTab(ab.newTab().setText("Tab 1"), Tab1Fragment.class, null); 
mTabsAdapter.addTab(ab.newTab().setText("Tab 2"), Tab2Fragment.class, null); 
mTabsAdapter.addTab(ab.newTab().setText("Tab 3"), Tab3Fragment.class, null); 

Répondre

3

loi de Murphy d'achoppement sur la réponse à votre propre question juste après que vous publiez sur Stack Overflow frappe à nouveau. Si vous ajoutez ActionBar.DISPLAY_SHOW_HOME à ab.setDisplayOptions(), ActionBar retournera en haut de l'écran. C'est une solution acceptable pour ce projet particulier (comme je voudrai probablement avoir l'icône de la maison là-bas), mais je serais toujours curieux de savoir s'il y a un autre moyen d'accomplir cela pour ceux qui - pour certains raison - ne préférerait pas afficher l'icône Accueil.

+1

Non. Il s'agit d'un bug censé être corrigé dans Android 4.1. –

+0

désolé mais je ne comprends pas comment cela fonctionne pour vous. si ajouter actionBar.setDisplayOptions (ActionBar.DISPLAY_SHOW_HOME); après ActionBar.DISPLAY_SHOW_CUSTOM il n'affiche plus un ActionBar personnalisé pour moi – Egis

Questions connexes