布局;
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#F87C67" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/tab" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ffffff" //背景色 app:tabIndicatorColor="#03A9F4" //选中时横线颜色 app:tabIndicatorHeight="5px" //文字下面横线的高度 app:tabSelectedTextColor="#03A9F4" //选中时字体颜色 app:tabTextColor="#999999" /> //未选中时字体颜色 <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
viewPager适配器
package example.com.quarterhour.adapter; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.ArrayList; import java.util.List; public class TitleFragmentPagerAdapter extends FragmentPagerAdapter { /** * The m fragment list. */ private List<Fragment> mFragmentList = null; private String[] titles; /** * Instantiates a new ab fragment pager adapter. * * @param mFragmentManager the m fragment manager * @param fragmentList the fragment list */ public TitleFragmentPagerAdapter(FragmentManager mFragmentManager, ArrayList<Fragment> fragmentList) { super(mFragmentManager); mFragmentList = fragmentList; } /** * titles是给TabLayout设置title用的 * * @param mFragmentManager * @param fragmentList * @param titles */ public TitleFragmentPagerAdapter(FragmentManager mFragmentManager, List<Fragment> fragmentList, String[] titles) { super(mFragmentManager); mFragmentList = fragmentList; this.titles = titles; } /** * 描述:获取数量. * * @return the count * @see android.support.v4.view.PagerAdapter#getCount() */ @Override public int getCount() { return mFragmentList.size(); } /** * 描述:获取索引位置的Fragment. * * @param position the position * @return the item * @see android.support.v4.app.FragmentPagerAdapter#getItem(int) */ @Override public Fragment getItem(int position) { Fragment fragment = null; if (position < mFragmentList.size()) { fragment = mFragmentList.get(position); } else { fragment = mFragmentList.get(0); } return fragment; } @Override public CharSequence getPageTitle(int position) { if (titles != null && titles.length > 0) return titles[position]; return null; } }
fragment中的使用; public class Referrals extends Fragment { private View view; private TabLayout tab; private ViewPager viewpager; private String[] titles = new String[]{"热门", "关注"}; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.referrals, container, false); initView(view); return view; } private void initView(View view) { tab = (TabLayout) view.findViewById(R.id.tab); viewpager = (ViewPager) view.findViewById(R.id.viewpager); List<Fragment> fragments = new ArrayList<>(); fragments.add(new HotFragment()); fragments.add(new FocusFragment()); TitleFragmentPagerAdapter adapter = new TitleFragmentPagerAdapter(getFragmentManager(), fragments, titles); viewpager.setAdapter(adapter); tab.setupWithViewPager(viewpager); } }
注意;fragments的大小要与titles大小一样,在Activity中使用把getFragmentManager()改成getSupportFragmentManager();