2015-07-26 8 views
58

यह मुख्य गतिविधिटैबलाउट का उपयोग करते समय मैं टैब पृष्ठभूमि रंग कैसे बदलूं?

public class FilterActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_filter); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
    PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager(), FilterActivity.this); 
    viewPager.setAdapter(pageAdapter); 

    // Give the TabLayout the ViewPager 
    final TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 



    } 
} 

में मेरी कोड है और यह XML में मेरी कोड है

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <include 
     android:id="@+id/app_bar" 
     layout="@layout/app_bar"> 
    </include> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/sliding_tabs" 
     android:layout_width="fill_parent" 
     style="@style/MyCustomTabLayout" 
     android:layout_height="48dp"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="1" 
     android:background="@android:color/white" /> 

</LinearLayout> 

मैं एक टैब की पृष्ठभूमि का रंग बदलना चाहते हैं जब यह

उत्तर

156

क्या अंत में मेरे लिए काम किया क्या @ 如果 我 के समान है 是 डीजे सुझाव दिया, लेकिन tabBackground होना चाहिए layout फ़ाइल और नहीं style अंदर है, तो ऐसा लगता है जैसे:

res/layout/somefile.xml:

<android.support.design.widget.TabLayout 
    .... 
    app:tabBackground="@drawable/tab_color_selector" 
    ... 
    /> 

और चयनकर्ता res/drawable/tab_color_selector.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/tab_background_selected" android:state_selected="true"/> 
    <item android:drawable="@color/tab_background_unselected"/> 
</selector> 
+0

धन्यवाद आप मेरा समय बचाओ। आपका जवाब मेरे लिए काम करें। –

+1

आप उस विशेषता में रंग मान भी जोड़ सकते हैं: यानी: ऐप: टैब बैकग्राउंड: @ रंग/रंगएक्सेन्ट –

+0

समाधान के लिए धन्यवाद। हालांकि, मैं इसके साथ डिफ़ॉल्ट लहर प्रभाव खो दिया। –

1

Have चयनित आपने API की जांच करने का प्रयास किया?

आपको OnTabSelectedListener ईवेंट के लिए श्रोता बनाने की आवश्यकता होगी, फिर जब कोई उपयोगकर्ता कोई टैब चुनता है तो आपको यह जांचना चाहिए कि यह सही है या नहीं, फिर tabLayout.setBackgroundColor(int color) का उपयोग करके पृष्ठभूमि रंग बदलें, या यदि यह सही टैब नहीं है सुनिश्चित करें कि आप एक ही विधि के साथ फिर से सामान्य रंग में बदल जाते हैं।

+0

हाँ, मुझे लगता है कि कोशिश की है, लेकिन tabLayout पूर्ण टैब विजेट का रंग बदल जाता है, और मैं tabLayout.Tab पर एक विधि है कि केवल बदलता है टैब रंग और अन्य टैब एक ही रंग के साथ रहना नहीं मिल सकता है । –

+0

मैं 100% निश्चित नहीं हूं कि आप क्या कर रहे हैं। यदि आप केवल एक टैब के बॉडी को रंगना चाहते हैं तो आप उस टैब के अंदर एक कंटेनर/व्यू जोड़ सकते हैं, फिर आप सामान्य में एक्सएमएल में कंटेनर/व्यू पृष्ठभूमि रंग सेट करने में सक्षम होना चाहिए, उदाहरण के लिए निम्नलिखित पृष्ठभूमि सेट करेगा लाल 'एंड्रॉइड के लिए: पृष्ठभूमि = एफएफ 0000' – sorifiend

+0

ये अन्य प्रश्न/उत्तर आपकी मदद कर सकते हैं: http://stackoverflow.com/questions/30904138/how-to-change-the-new-tablayout-indicator-color-and -हाइट और http://stackoverflow.com/a/30755351/1270000 – sorifiend

12

आप इस कोशिश कर सकते हैं:

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> 
    <item name="tabBackground">@drawable/background</item> 
</style> 

अपनी पृष्ठभूमि xml फ़ाइल में:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:drawable="@color/white" /> 
    <item android:drawable="@color/black" /> 
</selector> 
+0

और इसे कैसे कार्यान्वित करें? – TSR

7

एक्सएमएल में गुण जोड़ें:

<android.support.design.widget.TabLayout 
    .... 
    app:tabBackground="@drawable/tab_color_selector" 
    ... 
    /> 

और drawable फ़ोल्डर में बनाते हैं, तो tab_color_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/tab_background_selected" android:state_selected="true"/> 
    <item android:drawable="@color/tab_background_unselected"/> 
</selector> 
1

आप इसे एक्सएमएल में प्राप्त कर सकते हैं।

<android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     app:tabTextColor="@color/colorGray" 
     app:tabSelectedTextColor="@color/colorWhite" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
संबंधित मुद्दे