7

में होना चाहिए मैं एंड्रॉयड के लिए और अपने प्रोजेक्ट में नया हूँ मैं आवश्यकताकैसे चयनित टैब सेट करने के लिए मध्य

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

यह ठीक है लेकिन जब मैं शेष टैब के लिए स्क्रॉल करता हूं तो मैं इस मध्य आइटम को मध्य के रूप में कैसे सेट कर सकता हूं?

कोई भी समाधान प्राप्त करने के लिए सुझाव दे सकता है।

+0

आप एक श्रोता कि स्क्रॉल की पहचान करेगा का उपयोग करते हुए और आप मैन्युअल रूप से कॉलबैक विधि में selectedTab सेट की तुलना में देखा है? – hovanessyan

+0

अपने सुझाव के लिए धन्यवाद, लेकिन मैं निम्नलिखित स्क्रॉल श्रोताओं काम नहीं किया (मैं एक्सएमएल में Horizaontalscrollview घोषित) TestHorizontalScrollView sView = (TestHorizontalScrollView) findViewById (R.id.horizontalScrollView); सार्वजनिक वर्ग TestHorizontalScrollView फैली HorizontalScrollView { \t सार्वजनिक TestHorizontalScrollView (प्रसंग संदर्भ) { \t सुपर (संदर्भ); \t} \t @Override \t संरक्षित शून्य onScrollChanged (int एल, पूर्णांक टी, पूर्णांक oldl, पूर्णांक oldt) { \t \t \t super.onScrollChanged (एल, टी, oldl, oldt); \t} \t} – Gopi

+0

http://stackoverflow.com/q/8181828/1007273 यहां एक नज़र डालें, मुझे लगता है कि आपको सहायक विचार मिलेंगे। – hovanessyan

उत्तर

0

मुझे नहीं लगता कि टैबहोस्ट का ऐसा व्यवहार है। जैसा कि मुझे पता है, टैबहोस्ट टैब नियंत्रक के बिना काम कर सकता है। आपके मामले के लिए, एक गैलरी टैब नियंत्रक को प्रतिस्थापित करेगी, जैसा कि आप जानते हैं, गैलरी में चयनित आइटम हमेशा मध्य में रहता है। फिर गैलरी के ईवेंट श्रोता में, टैबहोस्ट में कौन सा टैब दिखाएगा, यह नियंत्रित करने के लिए कुछ कोड लिखें।

7

चेक this बाहर :)

public void centerTabItem(int position) { 
    tabHost.setCurrentTab(position); 
    final TabWidget tabWidget = tabHost.getTabWidget(); 
    final int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 
    final int leftX = tabWidget.getChildAt(position).getLeft(); 
    int newX = 0; 

    newX = leftX + (tabWidget.getChildAt(position).getWidth()/2) - (screenWidth/2); 
    if (newX < 0) { 
     newX = 0; 
    } 
    horizontalScrollView.scrollTo(newX, 0); 
} 
+0

यह बहुत अच्छी तरह से काम करता है। लेकिन यह पहली बार ऐसा होने के लिए कैसे मिलता है जब टैबहोस्ट सेटअप और प्रारंभ होता है। मान लें कि मैं मौजूदा इंडेक्स के साथ टैब होस्ट को 5 – Sunny

+0

सेटअप के बाद initailioze करना चाहता हूं, आप सीधे केंद्रTabItem (5) पर कॉल कर सकते हैं –

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