美文网首页
ViewPager+Fragment+TabLayout案例

ViewPager+Fragment+TabLayout案例

作者: 命运的撑船人 | 来源:发表于2019-10-22 12:10 被阅读0次
第一种方法:

1.xml设置TabLayout与ViewPager

<RelativeLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmls: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="com.edu.cumulus.tablayoutdemo.TabViewPagerActivity">

<android:support:v4.view.ViewPager
    android:id="@+id/vp"
     android:layout_width="match_parent"
    android:layout_height="wrap_content">
 </android.support.v4.view.ViewPager>
<android.support.design.widget.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true">
 </android.support.design.widget.TabLayout>
</RelativeLayout/>

2.为ViewPager创建适配器

    public class MianAdapter extends FragmentPagerAdapter{
    private ArrayList<Fragment> fragments;
   public MainAdapter(FragmentManager fm,     ArrayList<Fragment> fragments) {
          super(fm);
          this.fragments = fragments;
}
    public MainAdapter(FragmentManager fm) {
          super(fm);
}

@Override
    public Fragment getItem(int i) {
          return fragments.get(i);
}

@Override
    public int getCount() {
        return fragments.size();
}
}

3.代码设置TabLayout和ViewPager绑定
//找控件
//数据源
//创建适配器

 MainAdapter mainAdapter=new  MainAdapter(getSupportFragmentManager(),fragments)
//设置适配器
vp.setAdapter(mainAdapter);
  //联动
  tab.setupWithViewPager(vp);
  tab.getTabAt(0).setText("首页");
  tab.getTabAt(1).setText("资讯");
  tab.getTabAt(2).setText("直播");
  tab.getTabAt(3).setText("我");

#######第二种方法
首先式是布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="#ffffff"
        android:orientation="vertical">
        <android.support.design.widget.TabLayout
            android:id="@+id/tab_gank"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            app:tabBackground="@drawable/ripple_tab_bg"
            app:tabIndicatorColor="#ffce3d3a"
            app:tabSelectedTextColor="#ffce3d3a"
            app:tabTextColor="#585858" />

    </LinearLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/vp_gank"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff2f4f5">

    </android.support.v4.view.ViewPager>

</LinearLayout>
</lLinearLayout>

重写FragmentAdapter

 public class  MainFragmentAdapter extends FragmentPagerAdapter{L

List<Fragment> list;
List<String> title;

public MyFragmentAdapter(FragmentManager fm) {
    super(fm);
    }

public MyFragmentAdapter(FragmentManager fm, List<Fragment> list, List<String> title) {
    super(fm);
    this.list = list;
    this.title = title;
}

@Override
public Fragment getItem(int position) {
    return list.get(position);
}

@Override
public int getCount() {
    return list.size();
}

/*让TabLayout能获取到title*/
@Override
public CharSequence getPageTitle(int position) {
    return title.get(position);
}

}
主要是重写getPageTitle()方法
代码设置TabLayout和ViewPager绑定

 // tablayout
TabLayout tabLayout = (TabLayout)                   findViewById(R.id.tab_layout);
// vp
mViewPager = (ViewPager)     findViewById(R.id.container);

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
  mViewPager.setAdapter(mSectionsPagerAdapter);
// 绑定,要在viewpager设置完数据后,调用此方法,否则不显示 tabs文本
        tabLayout.setupWithViewPager(mViewPager);

相关文章

网友评论

      本文标题:ViewPager+Fragment+TabLayout案例

      本文链接:https://www.haomeiwen.com/subject/dnuamctx.html