页签指示器
【摘要】 这篇文章主要是viewpager里面嵌套fragment ,同时在头部添加页签指示器..废话不多说,直接上代码~1.首先,创建布局.一个LinearLayout 包裹一个 TabLayout 和 一个viewpager<?xml version="1.0" encoding="utf-8"?><LinearLayout android:id="@+id/activity_main" ...
这篇文章主要是viewpager里面嵌套fragment ,同时在头部添加页签指示器..废话不多说,直接上代码~
1.首先,创建布局.一个LinearLayout 包裹一个 TabLayout 和 一个viewpager
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/activity_main"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.tablayout.MainActivity">
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
2.利用butterknife找到tablayout和viewpager( ps:butterknife和findViewById一个道理,没用过butterknife,可以使用findViewById)
//使tabLayout 与 viewpager 关联起来
mTabLayout.setupWithViewPager(mViewPager);
//设置viewpager 适配器 **这里我们使用的适配器继承的是 FragmentPagerAdapter
ViewpagerAdapter adapter = new ViewpagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(adapter);
//定义fragment集合
List<Fragment> fragmentList = new ArrayList<>();
fragmentList.add(new BlankFragment());
fragmentList.add(new BlankFragment());
fragmentList.add(new BlankFragment());
//往适配器添加参数
adapter.addFragment(fragmentList);
下面需要注意的是我们使用的适配器继承FragmentPagerAdapter,搭配fragment很好用. 在适配器中重写getPageTitle(),为tabLayout添加标签
class ViewpagerAdapter extends FragmentPagerAdapter{
//穿建集合,用来盛装fragment
List<Fragment> mList = new ArrayList<>();
//自定义方法,用来添加fragment
public void addFragment( List<Fragment> list){
this.mList.addAll(list);
//不要忘记更新适配器哦~
notifyDataSetChanged();
}
public ViewpagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mList.get(position);
}
@Override
public int getCount() {
return mList.size();
}
String[] tabs = {
"标签1","标签2","标签3"
};
//重写此方法,给tabLayout添加标签
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
}
最后,使用fragment不要导错包,我们使用的是V4包下 ,使用的fragment管理器也是V4的.
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)