TabLayout+Fragment+ViewPager的标题滑动使用

来源:互联网 发布:广州汇丰银行软件开发 编辑:程序博客网 时间:2024/06/06 03:34

TabLayout控件是可以让标题向Listview一样进行滑动,只是是水平滑动,我们可以用它来作为标题分类,就像今日头条一样,下面是将TabLayout+Fragment+ViewPager进行联动;

1:导入TabLayout包,在Project Structure 中选择app,然后选择最后一个Dependencies,点击“+”号,选择:com.android.support:design:26.0.0-alpha1     点击ok就可以了

然后就可以在布局中使用TabLayout了,记得添加ViewPager进行匹配界面:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="text.bawei.com.tablistview.MainActivity">    <android.support.design.widget.TabLayout        android:id="@+id/mtab"        android:layout_width="match_parent"        android:layout_height="50dp"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        app:tabMode="scrollable"        android:layout_alignParentStart="true"        android:layout_marginTop="43dp">    </android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:layout_alignParentTop="true"        android:layout_weight="1">    </android.support.v4.view.ViewPager></LinearLayout>
然后在res的layout里面创建两个xml,用来不同的布局,然后创建类,继承Fragment,关联布局,需要多少就创建多少
public class Fragment1 extends Fragment {    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view=View.inflate(getContext(),R.layout.bbb,null);        return view;    }}
然后在main类里面进行ViewPager的适配器,同时对TabLayout和ViewPager进行关联
public class MainActivity extends AppCompatActivity {    private TabLayout mtab;    ViewPager viewPager;    private List<Fragment> arr=new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mtab = (TabLayout) findViewById(R.id.mtab);        viewPager = (ViewPager) findViewById(R.id.viewpager);//可以根据需求用数组或者集合添加标题       
 for (int i=0; i<2; i++)        {            mtab.addTab(mtab.newTab().setText("标题"+i));        }        arr.add(new Fragment1());        arr.add(new Fragment2());        mtab.setupWithViewPager(viewPager);        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {            @Override            public Fragment getItem(int position) {                return arr.get(position);            }            @Override            public int getCount() {                return arr.size();            }            @Override            public CharSequence getPageTitle(int position) {                return "标题";            }        });    }}
完成,如果每个页面布局和方法不同,只要在对应的xml文件里面进行布局就可以了,方法在对应的继承Fragment类里面就可以了。

阅读全文
0 0
原创粉丝点击