片段标题中的ViewPager图像

时间:2017-08-31 12:56:32

标签: android android-viewpager fragment

我已经制作了一个包含3个片段的ViewPager:

public class MainActivity extends AppCompatActivity {

    TabLayout tabLayout;
    ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewPager = (ViewPager) findViewById(R.id.viewPager);
        viewPager.setAdapter(new CustomAdapter(getSupportFragmentManager(),getApplicationContext()));

        tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        tabLayout.setupWithViewPager(viewPager);

        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
            }
        });

    }


    private class CustomAdapter extends FragmentPagerAdapter {

        private String fragments [] = {"Fragment 1","Fragment 2", "Fragment 3"};

        public CustomAdapter(FragmentManager supportFragmentManager, Context applicationContext) {
            super(supportFragmentManager);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position){
                case 0:
                    return new Fragment1();
                case 1:
                    return new Fragment2();
                case 2:
                    return new Fragment3();
                default:
                    return null;
            }
        }

        @Override
        public int getCount() {
            return fragments.length;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return fragments[position];
        }
    }
}

我会使用String Title(如Fragment 1,2 ......)代替可绘制文件夹的图像。

2 个答案:

答案 0 :(得分:1)

我没有从你的问题中得到你想要做的事情!但我假设你想要设置图像而不是片段的标题。如果是,那么它可能对你有帮助。

您可以使用tabLayout对象使用getTabAt,setIcon()方法轻松设置图标。

var regexShort = /^https:\/\/youtu\.be\/(.*)$/i;

你也可以参考:

How to add page title and icon in android FragmentPagerAdapter

如果你的问题不同,可以随意提问,谢谢。

答案 1 :(得分:0)

如果您使用的是tablayout设计:

tabLayout.getTabAt(ⅰ).setIcon();