2012-04-13 22 views
26

टैब के लिए एंड्रॉइड 4.0 में प्रमुख डिज़ाइन अनुशंसाओं में से एक है जहां उचित हो, उनके बीच allow swiping है। यह व्यवहार उपयोगकर्ताओं को टैब के साथ सीधे बातचीत करने के लिए आवश्यक बिना, टैब के आस-पास के लिए चयनित टैब की सामग्री में क्षैतिज रूप से स्वाइप करने में सक्षम बनाता है।मैं एंड्रॉइड पर टैब के बीच स्वाइपिंग कैसे कार्यान्वित करूं?

इसे कैसे कार्यान्वित किया जा सकता है?

उत्तर

34

नोट: यह Android Training वर्ग Implementing Effective Navigation से एक अंश है।


लागू करने के लिए इस (Android 3.0 या इसके बाद के संस्करण में), आप एक ViewPager संयोजन के रूप में ActionBar टैब एपीआई के साथ उपयोग कर सकते हैं।

वर्तमान पृष्ठ को बदलने के बाद, संबंधित टैब का चयन करें। आप अपनी गतिविधि का onCreate() विधि में एक ViewPager.OnPageChangeListener का उपयोग कर इस व्यवहार की स्थापना कर सकते हैं:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    ... 
    mViewPager.setOnPageChangeListener(
      new ViewPager.SimpleOnPageChangeListener() { 
       @Override 
       public void onPageSelected(int position) { 
        // When swiping between pages, select the 
        // corresponding tab. 
        getActionBar().setSelectedNavigationItem(position); 
       } 
      }); 
    ... 
} 

और एक टैब का चयन करने पर, ViewPager में इसी पेज पर स्विच करें। ऐसा करने के लिए, जब यह बनाने newTab() पद्धति का उपयोग करके अपने टैब के लिए एक ActionBar.TabListener जोड़ें:

actionBar.newTab() 
     ... 
     .setTabListener(new ActionBar.TabListener() { 
      public void onTabSelected(ActionBar.Tab tab, 
        FragmentTransaction ft) { 
       // When the tab is selected, switch to the 
       // corresponding page in the ViewPager. 
       mViewPager.setCurrentItem(tab.getPosition()); 
      } 
      ... 
     })); 
+1

हाय रोमन, कृपया एक उदाहरण तैयार करें जो कई गतिशील रूप से बनाए गए/प्रतिस्थापन योग्य टुकड़े वाले बहु-फलक लेआउट को स्वाइप करने के लिए एंटी एडाप्टर लागू करता है। चुनौतियां: - FragmentManager Fragments जोड़ने के लिए संसाधन आईडी का उपयोग करता है; आईडी पृष्ठों में अनन्य होना चाहिए (यदि आप एक कंटेनर के रूप में एक ViewGroup उदाहरण निर्दिष्ट नहीं कर सकते) - कंटेनर विचारों मौजूद होना चाहिए इससे पहले कि FragmentManager टुकड़े बहाल करने के लिए प्रयास करता है - बनाम उन्मुखीकरण परिवर्तन बग बनाए रखा उदाहरणों # 1: NullPointerException जब चारों ओर FragmentManager बचाने का प्रयास टुकड़ा राज्य; # 2: LoaderInfo.onLoadComplete – user289463

+1

के आस-पास NullPointerException आपको इसे एक नए प्रश्न के रूप में पूछना चाहिए। –

+0

अजीब चीजें होती हैं यदि आप एक्शनबार में मेनू आइकन जोड़ते हैं और इस तरह ViewPager का उपयोग करते हैं ... – Maxim

12

आप एंड्रॉयड 3.0 नीचे एपीआई को लक्षित कर रहे हैं, तो आप ऊपर रोमन के समाधान का उपयोग नहीं कर सकते हैं।

मैंने blog post here लिखा है कि अगर कोई दिलचस्पी लेता है तो एक्शनबैरशेलॉक के साथ एक ही चीज़ को कैसे पूरा किया जाए।

+0

यदि आप एंड्रॉइड कॉम्पेबिलिटी सपोर्ट लाइब्रेरी http://developer.android.com/tools/extras/support-library.html जोड़ते हैं तो पुराने संस्करणों के समाधान का उपयोग करना संभव है। नवीनतम ग्रहण एडीटी प्लगइन के साथ यह प्रोजेक्ट पर राइट-क्लिक करने और 'एंड्रॉइड टूल्स'> 'समर्थन लाइब्रेरी जोड़ें' चुनना जितना आसान है। उदाहरण के साथ एक मैनिफेस्ट का उपयोग करते समय परियोजना को एपीआई 14 या उच्चतर (यानी एंड्रॉइड 4+) के खिलाफ बनाया जाना होगा। '<उपयोग-एसडीके एंड्रॉइड: minSdkVersion =" 7 ">' एंड्रॉइड 2.1 पर चलाने के लिए। – ccpizza

+1

@ जेस्परबी- क्या होगा यदि मुझे एंड्रॉइड 2.3.3 के नीचे एंड्रॉइड ऐप लक्ष्यीकरण एपीआई के लिए और टैबबारशॉक का उपयोग किए बिना मेरे टैबहोस्ट में टैब के बीच स्वाइप लागू करने की आवश्यकता है .. ?? क्या आप मुझे इसके लिए कुछ सुझाव दे सकते हैं .. ?? –

+1

@ जेस्परबी-असल में मैंने पहले से ही ऐप को पूरी तरह से ठीक काम करने वाले टैबव्यू के साथ बनाया है ... मुझे बस स्वाइप की सुविधा अपडेट करने की आवश्यकता है !! –

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