【问题标题】:Adding Icons instead of text with PagerSlidingTabStrip使用 PagerSlidingTabStrip 添加图标而不是文本
【发布时间】:2015-06-24 12:03:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: android pagerslidingtabstrip


    【解决方案1】:

    在您的寻呼机适配器中实现 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 并返回一个 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;
    }
    

    【讨论】:

    • 我可以从哪里获得 IconTabProvider?
    • 这是一个接口,在 PagerSlidingTabStrip.java 中
    • 由于某种原因,我使用的是过时版本的库,所以我必须将库更新到最新版本才能使用“图标选项卡提供程序”
    • 如果我想添加带有文字的图标呢?
    【解决方案2】:

    按照以下步骤操作: 1. 让你的班级名称为

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

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

    2. 复制粘贴此功能

      @覆盖 公共 int getPageIconResId(int position) { 返回图标[位置]; }

    就是这样。应该工作

    【讨论】:

    • 如果我们想添加带有文本的图标呢?
    猜你喜欢
    • 2014-06-21
    • 2011-09-12
    • 2017-08-04
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    相关资源
    最近更新 更多