ViewPager
实现视图翻页,多视图切换的工具
可以和PagerTabStrip 、PagerTitleStrip 配合使用
每页不同布局控件的时候,可以配合fragment一起使用
在xml文件写入(这里配合PagerTabStrip)
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_page"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.viewpager.widget.PagerTabStrip
android:id="@+id/pager_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</androidx.viewpager.widget.ViewPager>
创建自己的适配器(这里使用FragmentPagerAdapter)
public class TabFragmentPagerAdapter extends FragmentPagerAdapter {
private FragmentManager mfragmentManager;
private List<Fragment> mlist;
private List<String> tlist;
public TabFragmentPagerAdapter(FragmentManager fm, List<Fragment> list,List<String> tlist) {
super(fm);
this.mlist = list;
this.tlist = tlist;
}
//显示第几个页面
@Override
public Fragment getItem(int position) {
return mlist.get(position);
}
//一共有几个页面,注意,使用Fragment特有的构造器时,和ViewPager的原生构造器的方法不同
@Override
public int getCount() {
return mlist.size();
}
//每页返回自己的title
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return tlist.get(position);
}
}
创建自己的不同的fragment,这里举个例子
public class JokeFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.joke,container,false);
//TextView textView = view.findViewById(R.id.joke);
return view;
}
}
在MainActivity中,设置对应的fragment和title,运行即可实现,快去试试吧!
private void init() {
//添加自己定义的fragment和title
viewList.add(new QRFragment());
viewList.add(new OneiromancyFragment());
viewList.add(new JokeFragment());
titleList.add("二维码生成");
titleList.add("周公解梦");
titleList.add("笑话大全");
ViewPager vp = (ViewPager) findViewById(R.id.view_page);
vp.setAdapter(new TabFragmentPagerAdapter(getSupportFragmentManager(),viewList,titleList));
}