2016-11-30 77 views
5

我想用兩種不同的文本大小設置TabLayout的標題。像下面給出的圖片一樣。或者以其他方式實現此目的!是否有任何方式在TabLayout中使用SpannableString?

enter image description here

我與SpannableString試圖像下面給。這段代碼在for循環中直到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

也許你可以用fromHtml() –

+0

使用Html.fromHtml(),或者如果它不起作用,然後爲該選項卡創建自定義佈局。 –

+0

@SahilMunjal Html.fromHtml()這個也沒有運氣! –

回答

6

TabLayout的默認樣式爲TextView s使用TextAppearancetextAllCaps屬性設置爲true。此轉換方法將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這裏是另一種選擇,因爲這不會有問題的屬性的默認設置。

相關問題