2016-11-30 7 views
5

मैं टैबलेआउट का शीर्षक दो अलग-अलग टेक्स्ट आकारों के साथ सेट करना चाहता हूं। नीचे दी गई छवि की तरह। या यह हासिल करने के लिए दूसरी तरफ!टैबलेआउट में स्पैन करने योग्य स्ट्रिंग का उपयोग करने का कोई तरीका है?

enter image description here

मैं SpannableString साथ की कोशिश की है नीचे देना पसंद करते हैं। यह स्निपेट 5 तक लूप के लिए है!

SpannableString mSpannableString= new SpannableString(s); 
mSpannableString.setSpan(new RelativeSizeSpan(2f), 0,5, 0); // set size 
mSpannableString.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, 0);// set color 
mTabLayout.getTabAt(i).setText(mSpannableString); 

लेकिन जैसे CommonaSware ने उल्लेख किया setText() युक्त सामग्री नहीं ले रही है!

+0

शायद आप एचटीएमएल() –

+0

से Html.fromHtml() का उपयोग कर सकते हैं या यदि यह काम नहीं करता है तो टैब के लिए कस्टम लेआउट बनाएं। –

+0

@ साहिलमुंजल एचटीएमएल.फ्रॉम एचटीएमएल() इस के साथ कोई भाग्य भी नहीं! –

उत्तर

6

TabLayout के डिफ़ॉल्ट शैली अपने TextView रों लिए textAllCaps विशेषता true करने के लिए सेट के साथ एक TextAppearance उपयोग करता है। इसके लिए रूपांतरण विधि CharSequence को फ्लैट String के रूप में संभालती है, इसलिए Spannable जानकारी खो जाती है।

इसे रोकने के लिए, हम TabLayout के लिए शैली बना सकते हैं जो textAllCaps को अक्षम करता है। उदाहरण के लिए:

<style name="TabTextAppearance" parent="TextAppearance.Design.Tab"> 
    <item name="textAllCaps">false</item> 
</style> 

TabLayout पर tabTextAppearance के रूप में सेट करने से अपने SpannableString अपेक्षा के अनुरूप काम करने की अनुमति देगा। के बाद से है कि समस्याग्रस्त विशेषता डिफ़ॉल्ट रूप से स्थापित करने की जरूरत नहीं होगी

<android.support.design.widget.TabLayout 
    android:id="@+id/tab_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:tabTextAppearance="@style/TabTextAppearance" /> 

टिप्पणी में उल्लेख किया है, टैब्स के लिए एक कस्टम View का उपयोग कर के रूप में, यहाँ एक और विकल्प है।

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