2013-08-06 7 views
10

मैं अपनी गतिविधि में android.support.v4.widget.DrawerLayout का उपयोग कर रहा हूं। जब तक मैं इसे खोलने के लिए स्वाइप इशारा का उपयोग करता हूं, यह ठीक काम करता है।DrawerLayout.openDrawer पहली बार काम नहीं करता

हालांकि, जब मैं इसे बटन के माध्यम से खोलना चाहता हूं तो drawer.openDrawer(Gravity.LEFT) पर कॉल करके क्लिक करें, यह काम नहीं करता है।

लेकिन, अगर मैं स्वाइप इशारा करते हुए इसे एक बार खोलता हूं, उसके बाद यह सामान्य रूप से बटन के साथ काम करता है पर क्लिक करता है।

कोई विचार यह है कि मैं इस बारे में कैसे हल या काम कर सकता हूं?

+0

क्या बटन आपके पास कुछ यादृच्छिक बटन के लिए क्लिक है, या क्या आप दराज को टॉगल करने के लिए ऊपरी बाईं ओर स्थित आइकन पर क्लिक करना चाहते हैं? – btse

+0

यह मेरे पास एक यादृच्छिक बटन है।फिर, अजीब चीज यह है कि स्वाइप जेश्चर के साथ इसे खोलने और बंद करने के बाद यह सामान्य रूप से काम करता है, जबकि यदि आप पहले बटन को आजमाते हैं तो यह कुछ भी नहीं करता – user2527666

+0

यह बहुत विषम है। क्या आपने यह सुनिश्चित करने के लिए लॉग बयान दिया है कि आपके बटन को कॉल करने वाली विधि को पहले क्लिक पर कॉल किया गया है? – btse

उत्तर

19

मैं एक ही मुद्दा था और मैं सिर्फ बाहर पाया है किसी कारण से FrameLayout कि दराज का प्रतिनिधित्व करता है दृश्यता "चला गया" पर सेट है, जो शायद पहली स्लाइड के दौरान "दृश्यमान" हो जाती है।

तो, अपना लेआउट xml फ़ाइल खोलें, अपने फ्रेमलेआउट को ढूंढें जो ड्रॉवर का प्रतिनिधित्व करता है और दृश्यता सेटिंग को मिटा देता है। मेरा उद्घाटन टैग अब निम्नानुसार है:

<FrameLayout 
    android:layout_width="305dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start"> 

यह मेरे लिए काम करता है।

चीयर्स

3

आप को लागू करना चाहिए आप ऊपर बाईं ओर टॉगल से इसे खोलने के लिए चाहते हैं onOptionsItemSelected(MenuItem item)

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // The action bar home/up action should open or close the drawer. 
    // ActionBarDrawerToggle will take care of this. 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 

    switch (item.getItemId()) { 
    case android.R.id.home: 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

मैं एक एक्शन बार का उपयोग नहीं कर रहा हूं ... – user2527666

+0

यह ध्यान देने योग्य है कि "mDrawerToggle.onOptionsItem चयनित" झूठी वापसी अगर किसी एक खंड में एक्शनबार मेनू है। –

0

DrawerLayout वस्तु के लिए clearFocus() विधि का उपयोग करें।

0

एक ही समस्या उत्पन्न हुई और लेआउट के अंदर दराज सामग्री तत्व के लिए चौड़ाई निर्दिष्ट करके इसे ठीक करने में सक्षम था।

लेआउट_विड्थ विशेषता के बिना ड्रावर पहले ओपन ड्रावर() कॉल, पर इसके मूल्य के साथ नहीं खुलता था।

<FrameLayout 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</FrameLayout> 

<FrameLayout 
    android:layout_width="300dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="right" 
    android:background="#ffffff" 
    android:id="@+id/drawer_content"> 
</FrameLayout> 

0

बहुत बेवकूफ, मैं एक खाली लेआउट सेट किया था, समस्या बस के रूप में ऊपर वर्णित है, जब दराज मैन्युअल पहली बार घसीटा गया था, उसके बाद, बटन काम किया गया था, लेकिन इसे पहले खींचने के बिना, नेविगेशन ड्रॉवर कभी नहीं खुलता था।

खाली लेआउट सेट न करें।

नेविगेशन ड्रावर सामग्री का प्रतिनिधित्व करने वाले ListView से मेरे EmptyLayout को हटाने से यह फिर से सही काम करता है।

drawerContentListView.setEmptyView(getLayoutInflater().inflate(R.layout.navigation_drawer_empty_layout, null)); 

**** मुझे एक घंटे से अधिक costed।

संबंधित मुद्दे