TabLayout是design库提供的控件,可以方便的使用指示器,功能类似ViewPagerIndicator.
Fragment 页面标题和小滑块切换效果:
(必须先下载一个依赖包:
design
)
直接上代码:
public class DiscoverFragment extends Fragment{
TabLayout tabLayout;
ViewPager viewPager;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_discover,null);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
tabLayout= (TabLayout) view.findViewById(R.id.discover_t1);
viewPager= (ViewPager) view.findViewById(R.id.discover_vp);
//对viewPager进行监听,得到小滑块要放置的位置(互相监听)
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
tabLayout.getTabAt(position).select();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//设置标题栏项目
tabLayout.addTab(tabLayout.newTab().setText("推荐"));
tabLayout.addTab(tabLayout.newTab().setText("分类"));
tabLayout.addTab(tabLayout.newTab().setText("电台"));
tabLayout.addTab(tabLayout.newTab().setText("主播"));
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
List<Fragment>fragmentList=new ArrayList<>();
fragmentList.add(new RecommendFragment());
fragmentList.add(new TypeFragment());
fragmentList.add(new RadioFragment());
fragmentList.add(new AuthorFragment());
//fragmen嵌套fragment用getChildfragmrntManager
CommAdapter pageradapter=new CommAdapter(getChildFragmentManager(),fragmentList);
viewPager.setAdapter(pageradapter);
//对小滑块的监听,得到标题当前应在的位置(互相监听)
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
//布局
<!--导航Tab-->
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:id="@+id/discover_t1"
app:tabSelectedTextColor="@color/public_red"
app:tabTextColor="@color/public_gray"
android:layout_height="wrap_content">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:id="@+id/discover_vp"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>