Je viens d'avoir le même problème avec l'amende de travail Menu coulissant sur ma course Samsung Galaxy S2 ICS, mais pas sur mon HTC Desire en cours d'exécution en pain d'épice.
J'ai utilisé la même méthode que vous pour implémenter le menu coulissant mais j'ai trouvé qu'une autre implémentation résolvait le problème.
Au lieu de fixer manuellement le menu à votre activité:
mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT);
J'ai choisi d'étendre mon activité par l'une des activités coulissantes de la bibliothèque SlidingMenu. Dans mon cas, mon activité s'étendait au début FragmentActivity
mais je l'ai remplacé par SlidingFragmentActivity
Ensuite, vous devez définir le behindView dans la méthode onCreate
ou votre activité va planter.
setBehindContentView(R.layout.slidingmenu); //Replace with the layout of your menu
Cela devrait résoudre le problème.
Voici un exemple de code de mon activité:
public class MainActivity extends SlidingFragmentActivity {
SlidingMenu menu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Main view layout for the activity
setContentView(R.layout.activity_listing);
// set the Behind View : REQUIRED (replace with your menu's layout)
setBehindContentView(R.layout.slidingmenu);
menu = getSlidingMenu();
//Now you can customize your sliding menu if you want
menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
menu.setShadowWidthRes(R.dimen.shadow_width);
menu.setShadowDrawable(R.drawable.slidingmenu_shadow);
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
menu.setFadeDegree(0.35f);
Vous remarquerez que cette solution vous n'avez pas appeler
mSlidingMenu.setMenu(firstPage);
mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT);
Je n'ai pas analysé tout le code source de la bibliothèque SlidingMenu mais peut-être la méthode actuelle attachToActivity
est boguée dans certains cas et ces bogues n'apparaissent pas si nous utilisons les activités spéciales fournies par la bibliothèque.
EDIT: Ok pour ceux qui travaillent avec la bibliothèque SlidingMenu ET ActionBarSherlock (ABS). Vous devez d'abord vous assurer que l'ABS est référencé dans la librairie SlidingMenu. De cette façon, vous pourrez étendre les classes d'activités fournies par SlidingMenu par les ABS.
exemple si je veux utiliser un FragmentActivity avec ABS et Sliding Menu: vous devez changer dans la bibliothèque de menu coulissant
class SlidingFragmentActivity extends FragmentActivity implements SlidingActivityBase
par
class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase
Et puis dans votre application, utilisez le SlidingFragmentActivity
normalement.
Voici le code de mon application, il est comme celui que je posté, mais avec le soutien ABS:
public class MainActivity extends SlidingFragmentActivity {
ActionBar mActionBar;
SlidingMenu menu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listing); //Layout of the above view
/*
* ABS initialization
*/
mActionBar = getSupportActionBar();
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
mActionBar.setDisplayHomeAsUpEnabled(true);
/*
* Sliding menu initialization
*/
menu = getSlidingMenu();
menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
menu.setShadowWidthRes(R.dimen.shadow_width);
menu.setShadowDrawable(R.drawable.slidingmenu_shadow);
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
menu.setFadeDegree(0.35f);
/* This line initializes the way the sliding menu is working
if you set the boolean to true, the ActionBar will slide along with the content.
if you set to false, only the content will slide and the ActionBar will not move */
setSlidingActionBarEnabled(true);
// set the Behind View
setBehindContentView(R.layout.slidingmenu); //Menu view
Ok, allant de ** SlidingActivity ** fonctionne parfaitement, mais il y a une chose que je can' À faire: des barres d'action glissent avec du contenu. Comment l'attacher au menu? Je n'ai trouvé aucune méthode (par exemple attachMode (int)) ... –
Essayez d'appeler 'setSlidingActionBarEnabled (true);' après les personnalisations du menu, il fera glisser le ActionBar. La valeur par défaut pour ce paramètre est false, c'est pourquoi seul le contenu est glissé. – FabriceMk
Pourriez-vous accepter la réponse si la solution a fonctionné pour vous s'il vous plaît? – FabriceMk