fun initViewPager() { val fragments = arrayListOf<Fragment>(OneFragment(), TwoFragment(), ThreeFragment(), FourFragment()) val myPagerAdapter = PagerAdapter(fragmentManager) myPagerAdapter.setFragments(fragments) viewPager.setAdapter(myPagerAdapter) tabLayot.addTab(tabLayot.newTab().setText(“Tab1”)) tabLayot.addTab(tabLayot.newTab().setText("Tab2")) tabLayot.addTab(tabLayot.newTab().setText("Tab3")) tabLayot.addTab(tabLayot.newTab().setText("Tab4")) tabLayot.setupWithViewPager(viewPager); }设置了setText时发现显示不了字体.在Tablayout里有这个方法
void populateFromPagerAdapter() { removeAllTabs(); if (mPagerAdapter != null) { final int adapterCount = mPagerAdapter.getCount(); for (int i = 0; i < adapterCount; i++) { addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false); } // Make sure we reflect the currently set ViewPager item if (mViewPager != null && adapterCount > 0) { final int curItem = mViewPager.getCurrentItem(); if (curItem != getSelectedTabPosition() && curItem < getTabCount()) { selectTab(getTabAt(curItem)); } } } }addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false)
原来要在Adapter里重写getPageTitle这个方法
class PagerAdapter(fm: FragmentManager, var tabs: ArrayList<String>) : FragmentPagerAdapter(fm) { private var mFragmentList: List<Fragment>? = null fun setFragments(fragments: ArrayList<Fragment>) { mFragmentList = fragments } override fun getItem(position: Int): Fragment { return mFragmentList!![position] } override fun getPageTitle(position: Int): CharSequence = tabs[position] override fun getCount(): Int { return mFragmentList!!.size } }
这样就可以显示了