2013-10-25 9 views
5

मैं दोनों ओरNavigationDrawer को निष्क्रिय दाएं स्वाइप

<FrameLayout android:id="@+id/navigation_drawer" 
    android:layout_width="@dimen/navigation_drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" /> 


<FrameLayout android:id="@+id/navigation_drawer_right" 
    android:layout_width="@dimen/navigation_drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="end" /> 

जब एक निश्चित विधि, चलाया जाता है लेकिन सही दराज से भर जाता है पर एक दराज के साथ DrawerLayout सेटअप, इससे पहले कि विधि चलाया जाता है मैं सही से स्वाइप कर सकते हैं और स्क्रीन मंद हो जाती है लेकिन कुछ भी नहीं दिखाता है (क्योंकि विधि चलने तक लेआउट खाली है)।

विधि को चलाने तक मैं दाईं ओर से स्वाइप कैसे अक्षम कर सकता हूं? मैंने किसी भी स्वाइपिंग को पूरी तरह अक्षम करने के लिए समाधान देखे हैं, लेकिन यह मेरे लिए काम नहीं करेगा क्योंकि बाएं दराज को हमेशा काम करने की ज़रूरत है (जब दाएं ड्रॉवर पर कोई विशेष विकल्प चुना जाता है तो सेटअप सही ड्रा फ़ंक्शन कहा जाता है)।

या, क्या ऐसा करने का एक बेहतर तरीका होगा? हो सकता है कि फ़ंक्शन चलाए जाने पर गतिशील रूप से सही फ्रेमलेआउट जोड़ना हो?

mDrawerLayout = (DrawerLayout) findViewById(R.id.navigation_drawer_right); 
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

और कड़ी चोट सक्षम करने के लिए:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); 

उत्तर

8

इस कड़ी चोट अक्षम करता है। आपको उस पर स्वाइप अक्षम करने के लिए सही दराज दृश्य को पारित करने की आवश्यकता है।

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, findViewById(R.id.right_drawer)); 
4

थोड़ा अद्यतन जवाब

+4

भी आप 'mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END) कर सकते हैं; ' –

4

बस एक दिलचस्प अवलोकन का उल्लेख करने के लिए।

मामले में आप और छोड़ कर के लिए एक लेआउट संरचना का उपयोग कर रहे हैं सही पक्ष मेनू यह एक:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 

<!-- MAIN CONTAINER --> 

    <include layout="@layout/content_home" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/toolbar"/> 


<!-- LEFT SIDE MENU --> 

<RelativeLayout 
    android:id="@+id/left_side_menu" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="start" 
    android:visibility="visible" 
    android:fitsSystemWindows="false" 
    android:background="@color/green"> 


    <!-- put some menu items in here --> 

</RelativeLayout> 



<!-- RIGHT SIDE MENU --> 
<RelativeLayout 
    android:id="@+id/right_side_menu" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end" 
    android:visibility="visible" 
    android:fitsSystemWindows="false" 
    android:background="@color/gray"> 

    <!-- put some items in here --> 

</RelativeLayout> 

आप करने वाले हैं कुछ कठिन समय केवल पक्ष में से एक को निष्क्रिय करने की कोशिश कर रहा है जैसे बयानों के साथ मेनू इस एक:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, findViewById(R.id.right_drawer)) 

पूरे DrawerLayout लॉक हो जाएगा और आप पक्ष मेनू के न स्वाइप करने के लिए सक्षम नहीं होगा कि ।

इस प्रकार, ऊपर दिए गए उत्तरों में से एक के तहत @ एल्बर्टो मालुजे द्वारा प्रस्तावित विधि आपको अधिक लचीलापन प्रदान करेगी।

mDrawerLayout.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

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