如何用 TabLayout 中的图标替换字符串?

How to replace string with the icon in TabLayout?

我正在尝试使用 TabLayout 制作 ViewPager 并在 TabLayout 中使用图标而不是文本。我尝试了教程、Whosebug 上的答案,但没有任何帮助解决我的问题。

我的 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(" "); 像这样

SpannableString sb = new SpannableString("a");

我的 TabLayout 反映了大写字母 A,如果留空 space 我的 TabLayout 没有任何价值并且是空白的,我想问题应该出在这一步,但我不知道如何解决它。

试试这个:

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

您可以在选项卡布局中设置图标而不是字符串,为此请使用以下代码行。

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.addTab(tabLayout.newTab().setIcon());

这是工作示例尝试一次https://drive.google.com/open?id=0ByZqApcbZkTqcUtxaXlfU3FETjg