मैं नए TabLayout का उपयोग Android Design लाइब्रेरी से कर रहा हूं। मैंने टेक्स्टकॉल स्टैटिस्टलिस्ट का उपयोग करने में कामयाबी हासिल कीtabLayout.setTabTextColors(colorstatelist)
मैं शैलियों का उपयोग करके इसे कैसे प्राप्त कर सकता हूं। xml?
मैं नए TabLayout का उपयोग Android Design लाइब्रेरी से कर रहा हूं। मैंने टेक्स्टकॉल स्टैटिस्टलिस्ट का उपयोग करने में कामयाबी हासिल कीtabLayout.setTabTextColors(colorstatelist)
मैं शैलियों का उपयोग करके इसे कैसे प्राप्त कर सकता हूं। xml?
जवाबों:
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"
app:tabTextColor="@color/your_unselected_text_color"
app:tabSelectedTextColor="@color/your_selected_text_color"/>
इसके अतिरिक्त, आगे की स्टाइलिंग के लिए tabIndicatorColor या tabIndicatorHeight जैसी विशेषताएँ हैं।
tabLayout.setTabTextColors(
getResources().getColor(R.color.your_unselected_text_color),
getResources().getColor(R.color.your_selected_text_color)
);
चूंकि यह पुराना तरीका एपीआई 23 के रूप में पदावनत है, इसलिए विकल्प यह है:
tabLayout.setTabTextColors(
ContextCompat.getColor(context, R.color.your_unselected_text_color),
ContextCompat.getColor(context, R.color.your_selected_text_color)
);
यहाँ पाठ शैली और चयनित पाठ रंग को ओवरराइड करने के लिए स्निपेट कोड है
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="tabTextAppearance">@style/MyCustomTabText</item>
<item name="tabSelectedTextColor">@color/tab_text_act</item>
</style>
<style name="MyCustomTabText" parent="TextAppearance.AppCompat.Button">
<item name="android:textSize">14sp</item>
<item name="android:textColor">@color/tab_text</item>
</style>
और यहाँ लेआउट के लिए स्निपेट कोड है
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/MyCustomTabLayout" />
उपरोक्त सभी उत्तर सही हैं, लेकिन मुझे लगता है कि डिफ़ॉल्ट शैलियों को ओवरराइड करना बेहतर है और केवल उस विशिष्ट तत्व को बदलना है जिसे आप बदलना चाहते हैं। नीचे दिए गए उदाहरण से पाठ बोल्ड हो जाएगा:
<style name="Widget.TabItem" parent="TextAppearance.Design.Tab">
<item name="android:textStyle">bold</item>
</style>
फिर..,
app:tabTextAppearance="@style/Widget.TabItem"
आपको बस android:textAppearance
स्टाइल को ओवरराइड करना है। क्योंकि TabLayout textAppearance का उपयोग करते हैं। यहाँ शैली का छोटा स्निपेट कोड है।
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Below will reference with our custom style -->
<item name="android:textAppearance">@style/my_tab_text</item>
</style>
<style name="my_tab_text" parent="Base.TextAppearance.AppCompat">
<item name="android:textColor">@android:color/holo_blue_dark</item>
</style>
और अगर आप अपने Apptheme से संदर्भ नहीं लेना चाहते हैं, तो आप सीधे नीचे दिए गए स्निपेट का उपयोग करके TabLayout को निर्दिष्ट कर सकते हैं।
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextAppearance="@style/my_tab_text"
app:tabIndicatorHeight="48dp"/>
कस्टम टैब के लिए हमें निम्नलिखित को ओवरराइड करना होगा: 1) ऐप: tabTextColor // for_unselected.tein "
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
style="@style/MyCustomTabLayout"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="?attr/colorPrimary"
android:scrollbarSize="24sp"
android:visibility="gone"
app:tabTextColor="@color/white_40_percent"
app:tabMode="scrollable" />
2) tabSelectedTextColor // चयनित टैब रंग के लिए 3) tabIndicatorColor // रंग बॉक्स के लिए सूचक
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="android:textColorPrimary">@color/white</item>
<item name="tabSelectedTextColor">@color/white</item>
<item name="tabTextAppearance">@style/TabTextStyle</item>
<item name="tabIndicatorColor">?attr/colorAccent</item>
<item name="tabIndicatorHeight">4dp</item>
<item name="android:tabStripEnabled">true</item>
<item name="android:padding">0dp</item>
</style>
<style name="TabTextStyle">
<item name="android:fontFamily">@string/font_fontFamily_medium</item>
<item name="android:textStyle">bold</item>
<item name="android:textAllCaps">true</item>
<item name="android:textColor">@color/tab_text_color</item>
<item name="android:textSize">16sp</item>
</style>
tab_text_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white_40_percent"android:state_selected="false"/>
<item android:color="@color/white_100_percent"android:state_selected="true"/>
</selector>
सामग्री घटक लाइब्रेरीTabLayout
में दिए गए साथ आप कर सकते हैं:
<com.google.android.material.tabs.TabLayout
style="@style/My_Tablayout"
..>
और अपनी शैली में tabTextColor
एक चयनकर्ता के साथ प्रयोग करें ।
<!-- TabLayout -->
<style name="My_Tablayout" parent="Widget.MaterialComponents.TabLayout" >
<item name="tabTextColor">@color/tab_layout_selector</item>
</style>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorPrimary" android:state_selected="true"/>
<item android:alpha="0.60" android:color="?attr/colorOnSurface"/>
</selector>
app:tabTextColor
अपने लेआउट में उपयोग करें : <com.google.android.material.tabs.TabLayout
app:tabTextColor="@color/tab_layout_selector"
..>
आसान और सही तरीका:
Xml फ़ाइल में ::
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextAppearance="@style/TabText"/>
मान-शैली फ़ाइल में:
नोट: "cairo_semibold" एक बाहरी फ़ॉन्ट है, आप इसे अपने फ़ॉन्ट से बदल सकते हैं।
<style name="TabText" parent="TextAppearance.Design.Tab">
<item name="android:textColor">#1f57ff</item>
<item name="android:textSize">14sp</item>
<item name="android:fontFamily">@font/cairo_semibold</item>
</style>
सबसे अच्छा या छोटा और सरल तरीका है कस्टम ऐपबार जैसा
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorAccent"
app:theme="@style/myCustomAppBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"><RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageButton
android:id="@+id/btn_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="@android:color/transparent"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/txt_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_toEndOf="@+id/btn_back"
android:layout_toRightOf="@+id/btn_back"
android:text="Title"
android:textColor="@android:color/white"
android:textSize="20sp"
android:textStyle="bold" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>
XML विशेषताएँ
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/white"
app:tabBackground="@color/colorAccent"
app:tabSelectedTextColor="@color/white"
app:tabTextColor="@color/white"
app:tabMode="scrollable" />
कोटलिन में प्रोग्राम किया
(tab_layout as TabLayout).setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorPrimary))
(tab_layout as TabLayout).setSelectedTabIndicatorColor(ContextCompat.getColor(mContext, R.color.white))
(tab_layout as TabLayout).setTabTextColors(ContextCompat.getColor(mContext, R.color.white),
ContextCompat.getColor(mContext, R.color.white))