2009-04-21 8 views
17

कैसे बना सकता हूं, मुझे पता है कि आइकन को प्रत्येक टैब पर कैसे रखा जाए, यह कोई समस्या नहीं है। मैं भी इस पार भागा: [स्टैक ओवरफ़्लो काफी एक ही बात पर थ्रेड] [1]एंड्रॉइड: राज्य पर टैब को कस्टमाइज़ करना: मैं चयनकर्ता को एक ड्रॉबल

मैं उस सवाल से किसी एक लिंक का पालन किया और पाया [इस] [2]

सुंदर ज्यादा, यह कहा एक्सएमएल में परिभाषित एक चयनकर्ता का उपयोग करने के लिए, निश्चित रूप से, ऐसा किया। लेकिन कोई आईडी संबद्ध नहीं है इसलिए मुझे यकीन नहीं है कि चयनकर्ता फ़ंक्शन को ड्रॉइंग के रूप में कैसे प्राप्त करें ताकि मैं इसे टैब के आइकन के रूप में उपयोग कर सकूं। शायद मैं इस बारे में गलत तरीके से जा रहा हूं। लेकिन यह मेरे पास है, और जाहिर है कुछ याद आ रही है।

<selector 
    android:id="@+id/myselector" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Non focused states --> 
    <item 
     android:state_focused="false" 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@drawable/darklogo" /> 
    <item 
     android:state_focused="false" 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/lightlogo" /> 

    <!-- Focused states --> 
    <item 
     android:state_focused="true" 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@drawable/lightlogo" /> 
    <item 
     android:state_focused="true" 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/lightlogo" /> 

    <!-- Pressed --> 
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/lightlogo" /> 
</selector> 

मेरे कोड में, एक उदाहरण टैब का उपयोग करके उत्पन्न होता है:

host.addTab(host.newTabSpec("three") 
       .setIndicator("map",drawables) 
       .setContent(new Intent(this, Map.class))); 

अभी drawable एक drawable छवि संसाधन के लिए सिर्फ एक संदर्भ है। मैं चयनकर्ता को आकर्षित करने के लिए कैसे बना सकता हूं?

यह मेरा सवाल यह है कि [1]: Updating Android Tab Icons [2]: http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385

उत्तर

20

एक्सएमएल तुम यहाँ शामिल किया है एक drawable आप एक मामले बयान एम्बेड देता है कि परिभाषित करने का एक तरीका है। यह उस दृश्य की स्थिति के आधार पर एक अलग ड्रॉइंग प्रस्तुत करता है जिसे इसे असाइन किया जा रहा है। एक ड्रॉ करने योग्य के रूप में, आपको इसे अपनी परियोजना के res/drawable फ़ोल्डर (उदाहरण के लिए tabselector.xml) के भीतर एक XML फ़ाइल के रूप में सहेजना चाहिए।

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

फिर जब आप मेजबान में प्रत्येक टैब जोड़ते हैं, तो आप tabselector को "टैब 1" के लिए दिखाए गए संकेतक के रूप में ड्रायबल निर्दिष्ट करते हैं।

Drawable mySelector = getResources().getDrawable(R.drawable.tabselector); 

mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1", mySelector).setContent(R.id.textview1)); 
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2)); 

ध्यान दें: आप नहीं कर सकते हैं परिवर्तन इस बिंदु पर माउस के पीछे टैब पृष्ठभूमि का रंग।

+0

सामान्य रूप से। आपका बहुत बहुत धन्यवाद। मुझे लगता है कि यह मेरा ड्रॉइंग फ़ोल्डर नहीं है मेरा बड़ा मुद्दा था। मुझे आगे बढ़ने के लिए कुछ कोड शामिल करने के लिए धन्यवाद .. मैं इसकी सराहना करता हूं। – Chrispix

+0

अब यह संभव है? मेरा मतलब आपका नोट स्टेटमेंट है। कृपया मेरे प्रश्न की जांच करें: http://stackoverflow.com/questions/2810075/customizing-tab-indicator-images-in-android – Praveen

1

आप एक व्यू को संकेतक के रूप में उपयोग कर सकते हैं, इस तरह आप इसे अपनी इच्छानुसार अनुकूलित कर सकते हैं।

mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator(View MyView).setContent(R.id.textview1)); 
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2)); 

पहला टैब व्यू को इसके सूचक के रूप में उपयोग करेगा और दूसरा एक CharSequence का उपयोग करेगा। वास्तविक टैबस्पेक कक्षा (http://developer.android.com/reference/android/widget/TabHost.TabSpec.html) पर एक नज़र डालें।

+0

यह एंड्रॉइड 1.6 संस्करण से काम करता है। इसे मत भूलना –

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