2016-03-29 16 views
0

TabLayoutでViewPagerを作成しようとしていて、TabLayoutでテキストの代わりにアイコンを使用しようとしています。私はチュートリアル、スタックオーバーフローの答えを試みたが、何も私の問題を解決するのに役立たなかった。文字列をTabLayoutのアイコンに置き換えるにはどうすればいいですか?

マイTabLayout

<android.support.design.widget.TabLayout 
       android:id="@+id/tab_layout" 
       style="@style/MyCustomTabLayout" 
       android:layout_width="match_parent" 
       android:layout_height="?android:attr/actionBarSize" 
       android:layout_alignParentBottom="true" 
       android:background="@color/colorPrimary" 
       app:tabGravity="fill" 
       app:tabMode="fixed" 
       local:theme="@style/ViewPagerTheme" 
       /> 

MyCustomTabLayoutスタイル

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> 
    <item name="tabTextAppearance">@style/MyCustomTextAppearance</item> 

</style> 

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

マイPagerAdapter getPageTitle()

@Override 
public CharSequence getPageTitle(int position) { 
    Drawable image = ContextCompat.getDrawable(App.getContext(), PageInfo.getByPosition(position).getIConResId()); 
    image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight()); 
    SpannableString sb = new SpannableString(" "); 
    ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM); 
    sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    return sb; 
} 

私はセット

<item name="textAllCaps">false</item>

とスタイルを使用していますが、私はこの

SpannableString sb = new SpannableString("a");

のようなものにSpannableString sb = new SpannableString(" "); を変更したときに、私のTabLayoutは、キャップAとし、空白のままに私のTabLayout場合き反映値がないと空白ですが、私は問題がこのステップにあるはずですが、私はそれを修正する方法がわかりません。

+0

しようと取り組んでいますか? –

答えて

3

はこれを試してみてください:

for (int i = 0; i < tabLayout.getTabCount(); i++) { 
    tabLayout.getTabAt(i).setIcon(R.drawable.your_icon); 
} 
+1

ありがとう!これは、 "public CharSequence getPageTitle(int position)"関数を削除したときに完全に機能しました – JonasSeputis

0

あなたは、コードの行を以下のこの使用のため、タブレイアウトで文字列の代わりにアイコンを設定することができます。あなたは、なぜあなたは、タブのテキストを設定している、テキストの代わりに画像を使用しようとしている場合はここ

TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.addTab(tabLayout.newTab().setIcon()); 
関連する問題