使用 PagerSlidingTabStrip 添加图标而不是文本

Adding Icons instead of text with PagerSlidingTabStrip

我正在尝试弄清楚如何使用以下库添加图标而不是文本 - https://github.com/astuetz/PagerSlidingTabStrip

有谁知道有什么方法可以有图标和文字吗?或者只使用图标而不是默认文本。

如果您能告诉我,将不胜感激。

在寻呼机适配器中实现 IconTabProvider 接口。例如:

public class MyPagerAdapter extends FragmentPagerAdapter implements IconTabProvider {  

    private int icons[] = {R.drawable.firstIcon, R.drawable.secondIcon, R.drawable.thirdIcon};


   public MyPagerAdapter (FragmentManager fm) {
      super(fm);
   }

   @Override
   public int getCount() {
      return 3; // number of pages
   }

   @Override
   public Fragment getItem(int position) {
      return MyFragment.newInstance(position);
   }

   @Override
   public int getPageIconResId(int position) {
       return icons[position];
   } 
}

编辑:
要添加图标 文本,请使用 getPageTitle 和 return a spannable:

@Override
public CharSequence getPageTitle(int position) {
    // Generate title based on item position
    Drawable image = context.getResources().getDrawable(icons[position]);
    image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
    // Replace blank spaces with image icon
    SpannableString sb = new SpannableString("   " + tabTitles[position]);
    ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
    sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    return sb;
}

按照以下步骤操作: 1. 将您的 class 名称设为

public class SampleFragmentPagerAdapter extends FragmentPagerAdapter implements
    PagerSlidingTabStrip.IconTabProvider {
  1. 声明可绘制对象

    final int[] icons = new int[]{R.drawable.a, R.drawable.b};

  2. 复制粘贴这个函数

    @Override public int getPageIconResId(int position) { return 图标[位置]; }

就是这样。应该有效