TabLayout+ViewPager使用

来源:互联网 发布:淘宝 武士刀 编辑:程序博客网 时间:2024/06/03 18:16

直接上效果图

这里写图片描述

首先看布局

<?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:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.design.widget.TabLayout        android:id="@+id/tablayout"        app:tabMode="scrollable"//这句话表示tab是可以滚动的        android:layout_width="match_parent"        android:layout_height="43dp">    </android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="0dp"        android:background="#D1EEEE"        android:layout_weight="1" /></LinearLayout>

MainActivity

package com.viewpager02;import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.widget.RadioButton;import android.widget.RadioGroup;import com.viewpager02.adapter.MyAdapter;import com.viewpager02.fragments.FourFragment;import com.viewpager02.fragments.OneFragment;import com.viewpager02.fragments.ThreeFragment;import com.viewpager02.fragments.TwoFragment;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private int currentPosition;    private ViewPager vp;    private List<Fragment> list;    private List<String> tab_list;    private MyAdapter adapter;    private TabLayout tabLayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        vp = (ViewPager) findViewById(R.id.vp);        tabLayout = (TabLayout) findViewById(R.id.tablayout);        initData();        initView();    }    private void initView() {        adapter = new MyAdapter(getSupportFragmentManager(),list,tab_list);        vp.setAdapter(adapter);        tabLayout.setupWithViewPager(vp);    }    private void initData() {        list = new ArrayList<>();        list.add(new OneFragment());        list.add(new TwoFragment());        list.add(new ThreeFragment());        list.add(new ThreeFragment());        list.add(new ThreeFragment());        list.add(new ThreeFragment());        list.add(new ThreeFragment());        list.add(new FourFragment());        tab_list = new ArrayList<>();        tab_list.add("全部");        tab_list.add("创业");        tab_list.add("历史");        tab_list.add("家庭");        tab_list.add("伦理");        tab_list.add("佛学");        tab_list.add("道德");        tab_list.add("法律");    }}

MyAdapter

package com.viewpager02.adapter;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentStatePagerAdapter;import java.util.List;/** * Created by Administrator on 2017/8/8. */public class MyAdapter extends FragmentStatePagerAdapter {    private List<Fragment> list;    private List<String> tab_list;    public MyAdapter(FragmentManager fm, List<Fragment> list, List<String> tab_list) {        super(fm);        this.list = list;        this.tab_list = tab_list;    }    @Override    public Fragment getItem(int position) {        return list.get(position);    }    @Override    public int getCount() {        return list==null?0:list.size();    }    @Override    public CharSequence getPageTitle(int position) {        return tab_list.get(position%tab_list.size());    }}