2012-03-28 16 views
46

मैं एक ViewPagerViewPager - अगले पृष्ठ

पहले टुकड़ा (नीला) में इस लक्ष्य को हासिल करने के लिए कोशिश कर रहा हूँ प्रदर्शित किया जाता है और अगले टुकड़ा की शुरुआत के रूप में अच्छी तरह से प्रदर्शित किया जाना चाहिए की एक आंशिक दृश्य प्राप्त है, तो उपयोगकर्ता समझता है कि वह दृश्य स्विच करने के लिए स्वाइप कर सकते हैं। विचार स्क्रीन के प्रोग्रामेटिक रूप से बाईं ओर 20% स्क्रॉल है।

किसी भी विचारों का स्वागत है

संपादित करें: यह वास्तव में क्या मैं करने के लिए की जरूरत है: केंद्रीय दृश्य दोनों पक्ष विचारों

enter image description here

उत्तर

44

आप अपने PageAdapter को यह जोड़ने की कोशिश कर सकते हैं:

public float getPageWidth(int position) { 
    if (position == 0 || position == 2) { 
     return 0.8f; 
    } 
    return 1f; 
} 
+0

@ जुइज़ास: मुझे भी एक ही समस्या का सामना करना पड़ रहा है यह ठीक काम कर रहा है। धन्यवाद। लेकिन मेरे पास प्रत्येक दृश्य के लिए गतिशील विचार हैं जो मुझे पहले और अगले पृष्ठ को दिखाने की ज़रूरत है, यह केवल तभी दाएं बच्चे को झुकाता है। मैंने इसे कई तरीकों से आजमाया है कृपया इस मुद्दे पर मदद करें। इस https://gist.github.com/devunwired/8cbe094bb7a783e37ad1 की तरह, लेकिन – Pinki

+0

@Praveena लोड करने में समय लगता है, अगर getPageWidth() आपको आवश्यकतानुसार काम नहीं कर रहा है, तो आपको वैकल्पिक समाधान की तलाश करनी पड़ सकती है। शायद setPageMargin के लिए नकारात्मक मान का उपयोग करें। हो सकता है कि अपनी परियोजना में ViewPager स्रोत कोड जोड़ें और इसे संशोधित करें। –

15

ViewPager.setPageMargin के लिए नकारात्मक मान उपयोग करने का प्रयास ओवरलैप करने की जरूरत है ।

+1

कि काम करता है लेकिन अगर यह सबसे अच्छा ठीक है overlap-- है, तो सुनिश्चित करें कि आपके पृष्ठों पर्याप्त पतला इसका इस्तेमाल करने की कर रहे हैं टुकड़े का कारण बनता है। – edthethird

+0

धन्यवाद एडमके, यह केवल मेरी समस्या को हल करता है क्योंकि मुझे इससे थोड़ा अधिक करने की आवश्यकता है। मैंने सवाल अपडेट किया है, क्या आपके पास कोई विचार है? – znat

+0

@zylootino - दुर्भाग्य से मुझे नहीं लगता कि एक मानक ViewPager आपके अद्यतन संस्करण को पूरा करने में सक्षम है। आपको ViewPager को विस्तारित करके स्वयं को कस्टम बनाने की आवश्यकता होगी, जो एक अधिक जटिल कार्य होगा। माफ करना शुरू करने के लिए मेरे पास कोई तत्काल सुझाव नहीं है। – AdamK

12

इस समारोह (वैसे भी मेरे लिए) से जवाब के रूप में सही चिह्नित बेहतर काम किया।

@Override 
public float getPageWidth(int position) { 
    return 0.9f; 
} 

बस अपने कस्टम PagerAdapter वर्ग में रखें।

+1

यह स्वीकार्य उत्तर में बिल्कुल वही तरीका है ... – znat

+0

फ़ंक्शन की सामग्री का संदर्भ लें - स्वीकृत उत्तर मेरे लिए काम नहीं करता है, यह एक किया है। –

3
viewpager.setClipToPadding(false); 
viewpager.setPageMargin(-50);