prostu miałem ten sam problem z Przesuwane menu działa poprawnie na moim Samsung Galaxy S2 ICS ale nie działa na moim HTC Desire z systemem Gingerbread.
Użyłem tej samej metody, co przy wdrażaniu przesuwanego menu, ale stwierdziłem, że inna implementacja rozwiązała problem.
Zamiast ręcznego mocowania menu do aktywności:
mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT);
Wybrałem przedłużyć aktywny przez jednego z działań przesuwne z biblioteki SlidingMenu. W moim przypadku moja Aktywność najpierw rozszerzyła się na FragmentActivity
, ale zastąpiłem ją SlidingFragmentActivity
Następnie powinieneś ustawić metodę behindView w metodzie onCreate
, aby Twoja aktywność się zawiesiła.
setBehindContentView(R.layout.slidingmenu); //Replace with the layout of your menu
To powinno naprawić problem.
Oto przykładowy kod mojej działalności:
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);
Będziesz pamiętać, że z tego rozwiązania nie trzeba zadzwonić
mSlidingMenu.setMenu(firstPage);
mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT);
nie przeanalizowali cały kod źródłowy biblioteki SlidingMenu, ale być może obecna metoda attachToActivity
jest w niektórych przypadkach błędna, a te błędy nie pojawiają się, jeśli korzystamy ze specjalnych działań zapewnionych przez bibliotekę.
EDYCJA: OK dla tych, którzy pracują z biblioteką Sliding Menu i ActionBarSherlock (ABS). Najpierw musisz upewnić się, że ABS jest odwołany w bibliotece SlidingMenu. W ten sposób będziesz mógł rozszerzyć klasy działań zapewniane przez Sliding Menu o ABS.
przykład jeśli chcę użyć FragmentActivity zarówno z ABS i menu przesuwny: trzeba zmienić w przesuwnych menu biblioteki
class SlidingFragmentActivity extends FragmentActivity implements SlidingActivityBase
przez
class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase
a następnie w was aplikacji używaj normalnie SlidingFragmentActivity
.
Oto kod z mojej aplikacji, to jak ten napisałem ale ze wsparciem 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, rozciągający się od ** SlidingActivity ** działa idealnie, ale jest jedna rzecz, którą can' do zrobienia: slajdy na pasku działań z zawartością. Jak dołączyć go do menu? Nie znalazłem żadnej metody (na przykład attachMode (int)) ... –
Spróbuj wywołać 'setSlidingActionBarEnabled (true);' po dostosowaniu menu, poślizgnie ActionBar. Domyślną wartością tego ustawienia jest fałsz, dlatego tylko zawartość przesuwa się. – FabriceMk
Czy możesz zaakceptować odpowiedź, jeśli rozwiązanie zadziała dla Ciebie? – FabriceMk