2016-11-30 7 views
5

2つの異なるテキストサイズのTabLayoutのタイトルを設定したいとします。下の画像と同じです。またはこれを達成するために他の方法!TabLayoutでSpannableStringを使用する方法はありますか?

enter image description here

以下与えるように私はSpannableStringで試してみました。このスニペットは5までのforループにあります!

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を述べたように()リッチコンテンツを取っていません!そのTextViewのため

+0

おそらくfromHtml()で行うことができます –

+0

Html.fromHtml()を使用するか、動作しない場合は、そのタブのカスタムレイアウトを作成します。 –

+0

@SahilMunjal Html.fromHtml()もこれで運がいいです! –

答えて

6

TabLayoutのデフォルトのスタイルはtrueに設定textAllCaps属性でTextAppearanceを使用しています。これの変換方法はCharSequenceをフラットStringとして処理するので、Spannableの情報は失われます。

これを防ぐため、TabLayoutのスタイルを作成してtextAllCapsを無効にすることができます。たとえば:

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

TabLayouttabTextAppearanceとしてこれを設定する期待どおり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を使用すると、ここでは別のオプションです。

関連する問題