2012-12-15 36 views
9

मैं अपने आवेदन में Sliding Menu का उपयोग करने की कोशिश कर रहा हूं। मेरे सोनी एक्सपीरिया एस पर यह बहुत अच्छा काम करता है, लेकिन जब मैं एचटीसी डिजायर एचडी पर ऐप लॉन्च करने का प्रयास करता हूं, तो मेनू इशारा द्वारा सही खुलता है, लेकिन अन्य टच इवेंट अवरुद्ध होते हैं और शीर्ष दृश्य (ViewPager, स्लाइडिंग मेनू इसके पीछे है) स्क्रॉल नहीं कर रहा है।स्लाइडिंग मेनू ताले स्पर्श दृश्य ऊपरी दृश्य

क्या कोई यह जानता है कि इसे कैसे ठीक किया जाए?

हो सकता है यह एक जवाब देने के लिए उपयोगी होगा (यह मैं कैसे मेनू का उपयोग कर रहा है):

private void initSlidingMenu() 
{  
    mSlidingMenu = new SlidingMenu(getApplicationContext()); 

    mSlidingMenu.setMode(SlidingMenu.LEFT); 
    mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
    mSlidingMenu.setShadowWidthRes(R.dimen.default_shadow_width); 
    mSlidingMenu.setShadowDrawable(R.drawable.defaultshadow); 
    mSlidingMenu.setBehindOffsetRes(R.dimen.default_behind_offset); 
    mSlidingMenu.setFadeDegree(0.35f); 
    mSlidingMenu.setMenu(firstPage); 
    mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT);  
} 

onPageSelected() में, मैं मेनू अक्षम करते हैं या सक्षम है, तो मेनू केवल बाईं पेज पर दिखाई देता है:

@Override public void onPageSelected(int arg0) 
{ 
    ActivityCompat.invalidateOptionsMenu(this); 

    if (arg0 == Utils.DEFAULT_PAGE) 

     mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 

    else 

     mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); 
} 

उत्तर

9

मैं बस अपना सैमसंग गैलेक्सी एस 2 पर ठीक काम कर रहा मेरी एचटीसी जिंजरब्रेड चल इच्छा पर आईसीएस लेकिन नहीं चल स्लाइडिंग मेनू के साथ एक ही समस्या थी।

मैंने स्लाइडिंग मेनू को लागू करने के लिए उसी विधि का उपयोग किया लेकिन मुझे पता चला कि एक अन्य कार्यान्वयन ने समस्या हल की है।

इसके बजाय मैन्युअल रूप से अपनी गतिविधि के लिए मेनू संलग्न की

:

mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT); 

मैं SlidingMenu पुस्तकालय से स्लाइडिंग गतिविधियों में से एक के आधार पर अपना गतिविधि का विस्तार करने के लिए चुना है। मेरे मामले में, मेरा गतिविधि पहली बार में FragmentActivity विस्तार था, लेकिन मैं द्वारा SlidingFragmentActivity

बदल दिया तो फिर तुम onCreate विधि या अपनी गतिविधि दुर्घटना होगा अंदर behindView स्थापित करना चाहिए।

setBehindContentView(R.layout.slidingmenu); //Replace with the layout of your menu 

यह समस्या को ठीक करना चाहिए।

यहाँ मेरी गतिविधि का एक नमूना कोड है:

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); 

आप देखेंगे कि इस समाधान के साथ आप

mSlidingMenu.setMenu(firstPage); 
mSlidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT); 

मैं सभी स्रोत कोड का विश्लेषण किया नहीं किया है कॉल करने के लिए की जरूरत नहीं है SlidingMenu लाइब्रेरी का हो सकता है लेकिन हो सकता है कि वर्तमान attachToActivity विधि कुछ मामलों में छोटी है और लाइब्रेरी द्वारा प्रदान की गई विशेष गतिविधियों का उपयोग करते समय उन बग्स प्रकट नहीं होते हैं।

संपादित करें: उन लोगों के लिए ठीक है जो स्लाइडिंगमेनू लाइब्रेरी और एक्शनबैरशॉक (एबीएस) के साथ काम कर रहे हैं। सबसे पहले आपको यह सुनिश्चित करना होगा कि स्लाइडिंगमेनू लिब में एबीएस का संदर्भ दिया गया हो। इस तरह, आप एबीएस द्वारा स्लाइडिंगमेनू द्वारा प्रदान की गई गतिविधियों की कक्षाओं का विस्तार करने में सक्षम होंगे।

उदाहरण मैं दोनों ABS और स्लाइडिंग मेनू के साथ एक FragmentActivity उपयोग करना चाहते हैं: आप आप आवेदन में से

class SlidingFragmentActivity extends SherlockFragmentActivity implements SlidingActivityBase 

और फिर फिसलने मेनू पुस्तकालय

class SlidingFragmentActivity extends FragmentActivity implements SlidingActivityBase 

में बदलना होगा, सामान्य रूप से SlidingFragmentActivity का उपयोग करें।

यहाँ मेरी एप्लिकेशन का कोड है, यह एक मैं पोस्ट की तरह लेकिन एबीएस समर्थन के साथ है:

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 
+0

ठीक है, ** SlidingActivity से विस्तार ** सही काम करता है, लेकिन वहाँ एक बात मैं can' है टी करने के लिए: सामग्री बार के साथ कार्रवाई बार स्लाइड। इसे मेनू में कैसे संलग्न करें? मुझे कोई विधि नहीं मिली (उदाहरण के लिए attachMode (int)) ... –

+0

'setSlidingActionBarEnabled (true) को कॉल करने का प्रयास करें;' मेनू अनुकूलन के बाद, यह एक्शनबार को स्लाइड करेगा। इस सेटिंग के लिए डिफ़ॉल्ट मान गलत है, यही कारण है कि केवल सामग्री स्लाइड। – FabriceMk

+1

अगर समाधान आपके लिए काम करता है तो क्या आप जवाब स्वीकार कर सकते हैं? – FabriceMk