Android初学者入门——------TabLayout介绍与ViewPager联动

来源:互联网 发布:法国德国人 知乎 编辑:程序博客网 时间:2024/05/22 17:35

首先需要导入数据库Design库,分析实现思路:需要两个集合,一个标题的集合,一个Fragment集合

一:布局:TabLayout注意包名

<RelativeLayout 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"    xmlns:app="http://schemas.android.com/apk/res-auto">    <android.support.design.widget.TabLayout        android:id="@+id/tab_layout"        android:layout_width="match_parent"        android:layout_height="wrap_content"        app:tabGravity="center"        app:tabIndicatorColor="@color/colorAccent"        app:tabMode="scrollable"        app:tabSelectedTextColor="@color/colorPrimaryDark"        app:tabTextColor="@color/colorPrimary"        >    </android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:id="@+id/view_pager"        android:layout_below="@+id/tab_layout"        android:layout_width="match_parent"        android:layout_height="wrap_content">    </android.support.v4.view.ViewPager></RelativeLayout>二:MainActivity代码    1、初始化两个控件    2、创建标题的集合,添加数据        
       List<String> listStr = new ArrayList();       listStr.add("美女");       listStr.add("段子");       listStr.add("社会");       listStr.add("汽车");       listStr.add("博客");       listStr.add("前端");       listStr.add("公司");       listStr.add("资讯");       listStr.add("视频");       listStr.add("文学");     3、创建Fragment集合,然后通过Fragment把标题加进集合
       List<Fragment> listTv = new Arrlist<>();
for (int i = 0; i < 10; i++) { //创建NewsFragment类继承Fragment
listTv.add(new NewsFragment(listStr.get(i))); }
4、设置适配器
       view_pager.setAdapter(new MyAdapter(getSupportFragmentManager()));       //创建ViewPager的适配器(MyAdapter)       
       class MyAdapter extends FragmentPagerAdapter {//继承FragmentPagerAdapter           public MyAdapter(FragmentManager fm) {               super(fm);           }           @Override       public Fragment getItem(int position) {            return listTv.get(position);      }          @Override          public int getCount() {               return listTv.size();        }       //此方法需要手动提示重写,设置当前标题      @Override         public CharSequence getPageTitle(int position) {             return listStr.get(position);        }    }

5、联动
       tab_layout.setupWithViewPager(view_pager);






原创粉丝点击