2009-07-16 18 views
20

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

मैं परिभाषित किया है इस तरह मेरी लेआउट एक्सएमएल:

<SlidingDrawer 
    android:id="@+id/l_drawer" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:handle="@+id/l_handle" 
    android:content="@+id/l_content" 
    android:orientation="horizontal" 
    android:layout_gravity="left" 
    > 

किसी को भी कैसे स्लाइड बाएं से दाएं बनाने के लिए के लिए एक विचार है?

+0

असल में मैं कुछ कोड है कि कुछ इसी तरह लागू करता पाया। स्क्रीनशॉट के साथ ब्लॉग: http://androidblogger.blogspot.com/2009/01/sliding-drawer-again.html फोरम चर्चा: http://www.anddev.org/viewtopic.php?p=16622 से चेकआउट कोड एसवीएन: http://code.google।कॉम/पी/एंड्रॉइड-मिस्क-विगेट्स/ –

+0

मैं भी हॉरिज़ोनल स्लाइडर को कार्यान्वित करना चाहता हूं और मैंने एसवीएन के लिंक की जांच की है, लेकिन कोई भी परियोजना/कोड उपलब्ध नहीं है –

+0

पृष्ठ के शीर्ष पर 'स्रोत' टैब पर क्लिक करें और उसके बाद स्रोत कोड दिखाने के लिए 'ब्राउज़ करें' विकल्प। –

उत्तर

6

मुझे नहीं लगता कि आप SlidingDrawer स्रोत कोड को पकड़कर, इसमें परिवर्तन कर सकते हैं और अपने संशोधित संस्करण का उपयोग करके शायद कर सकते हैं। आप इसी तरह से SlidingDrawer नहीं बना सकते हैं जो शीर्ष से निकलता है।

+0

और अधिक googling के बाद, मुझे अभी भी ऐसा करने के लिए कोई उदाहरण या तरीके नहीं मिला है, इसलिए हाँ, मैं सहमत हूं, एंड्रॉइड एसडीके के साथ ऐसा करने का कोई तरीका नहीं है ... –

1

मैंने उस वर्ग को फिर से लिखा है और इसे मेरे ओपन सोर्स लाइब्रेरी का हिस्सा बना दिया है। इसे सही करने में मुझे लगभग एक सप्ताह लग गया। कृपया स्लाइडिंग ट्रेमें एंड्रॉइड एंड्रॉइड के लिए ओपन सोर्स लाइब्रेरी देखें।

http://aniqroid.sileria.com/doc/api

ऊपर के लिंक में SlidingTray वर्ग के लिए डाउनलोड लिंक और दस्तावेज प्राप्त करें।

(प्रकटीकरण:। मैं इस परियोजना के मेंटेनर हूँ)

+1

मुझे आक्रमण करते समय एक नलपोइंटर अपवाद मिल रहा है SlidingTray। 11-13 16: 41: 51.980: ई/एंड्रॉइड रनटाइम (23438): इसके कारण: java.lang.reflect.InvocationTargetException – vandus

+0

मुझे एक नल पॉइंटर अपवाद भी मिल रहा है। java.lang.NullPointerException: com.sileria.android.view.SlidingTray.onLayout (अज्ञात स्रोत) – Sathesh

29

मुझे लगता है कि ऐसा करने के लिए एक आसान तरीका मिल गया है। आपको केवल स्लाइडिंग ड्रावर, सामग्री और हैंडल के लिए 180º के घूर्णन को सेट करना है। आप इसी तरह से स्लाइडिंग ड्रावर बना सकते हैं जो शीर्ष से निकलता है, जैसे मैंने here किया था।

मतभेदों को देखने में सक्षम होने के लिए, पहले से बाएं से पहले, मेरे उदाहरण यहां देखें।

<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/slidingDrawer" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center_horizontal" 
    android:handle="@+id/handle" 
    android:content="@+id/content"> 
    <ImageView android:id="@+id/handle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 
    <ImageView android:id="@+id/content" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#FF0000" 
     android:src="@drawable/ic_launcher" /> 
</SlidingDrawer> 

अब देखो कि मैं बाईं ओर से बाहर निकलने के लिए क्या बदल गया।

<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/slidingDrawer" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center_horizontal" 
    android:handle="@+id/handle" 
    android:content="@+id/content" 
    android:rotation="180"> 
    <LinearLayout android:id="@+id/handle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <ImageView android:id="@+id/imageView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_launcher" 
      android:rotation="180" /> 
    </LinearLayout> 
    <ImageView android:id="@+id/content" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#FF0000" 
     android:src="@drawable/ic_launcher" 
     android:rotation="180" /> 
</SlidingDrawer> 

ध्यान दें कि मैं भी एक LinearLayout बनाई संभाल के रूप में स्थापित करने के लिए, और यह रोटेशन में कोई परिवर्तन नहीं किया था, लेकिन मैं इसके बारे में रोटेशन बदल बच्चा है। यह मेरे पास एक छोटी सी समस्या को रोकने के लिए था, लेकिन सब ठीक काम कर रहा है और यह आसान है।

+0

आप अद्भुत आदमी हैं! यह बढ़िया काम करता है। मैंने सबसे अच्छा समाधान खोजने के लिए 3 घंटे से अधिक समय की खोज की और आखिरकार और सौभाग्य से आपके समाधान को मिला। :) – Hesam

+4

ध्यान दें कि रोटेशन एपीआई स्तर 11+ (होनकॉम) –

+1

यह भी ध्यान रखें कि स्लाइडिंग ड्रावर को एपीआई 17 (एंड्रॉइड 4.2) में बहिष्कृत किया गया था, इसलिए यह शायद भविष्य के सबूत के लिए बेहतर है और स्लाइडिंग ड्रावर से दूर माइग्रेट हो। – spaaarky21

0

आप कोड इस जवाब में पोस्ट का उपयोग कर सकते हैं: Android SlidingDrawer from top?

प्रदान की समाधान एक्सएमएल में Slidingdrawer के उन्मुखीकरण भी यह आसान केवल 1 वर्ग और attrs.xml में कुछ अतिरिक्त और स्थिर की आवश्यकता होती है, क्योंकि यह व्युत्पन्न सेटिंग को सुविधाएँ एसडीके से Androids Slidingdrawer से। मैं यह भी चर्चा करता हूं कि मैंने इंटरनेट/एसओ पर पाए गए अन्य लोकप्रिय libs/समाधान क्यों नहीं चुने।

Quicklink सार करने के लिए: MultipleOrientationSlidingDrawer (source & example) @ gist

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