欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android使用TabLayou+fragment+viewpager实现滑动切换页面效果

程序员文章站 2023-11-24 12:17:58
 tablayou 主要实现的是标题头的 滑动 这个 控件 类似于 scrollview xml中的布局

 tablayou 主要实现的是标题头的 滑动 这个 控件 类似于 scrollview

xml中的布局

<linearlayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  >
  <android.support.design.widget.tablayout
   android:id="@+id/homefragment_tablelayouts"
   android:layout_width="0dp"
   android:layout_height="30dp"
   app:tabindicatorheight="2dp"
   android:layout_weight="1"
   app:tabindicatorcolor="@color/colorred"
   app:tabselectedtextcolor="#000000"
   app:tabmode="scrollable"
   >
  </android.support.design.widget.tablayout>
  <imageview
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/add_channel_titlbar_new"
   />
 </linearlayout>
 <android.support.v4.view.viewpager
  android:layout_weight="1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:id="@+id/homefragment_vp"
  ></android.support.v4.view.viewpager>

以下是代码的实现

//定义一个方法 
 public void getvptitledata() {
 // 找到 tablayou 控件
  tablayout mtablayout= (tablayout) getview().findviewbyid(r.id.homefragment_tablelayouts);
  // 找到 viewpager 控件
  viewpager mviewpager= (viewpager) getview().findviewbyid(r.id.homefragment_vp);
  //定义 title 集合 来存储 解析的data数据
  listtitle = new arraylist<>();
  listtitle .add("头条");
  listtitle .add("社会");
  listtitle .add("国内");
  listtitle .add("国际");
  listtitle .add("明星");
  listtitle .add("娱乐");
  listtitle .add("军事");
  listtitle .add("财经");
  listtitle .add("时尚");
  listtitle .add("八卦");
  //遍历 listtitle 集合 将title 添加经 tablayou z中
  for (int i = 0; i <listtitle.size() ; i++) {
   mtablayout.addtab(mtablayout.newtab().settext(listtitle.get(i)));
  }
  //创建集合 循环添加创建的fragment
  listfragment = new arraylist<>();
  for (int i = 0; i <date.size() ; i++) {
   beijingfragment mjingfragment = new beijingfragment();
   listfragment.add(mjingfragment);
  }
  homefragmentvpfragmentadapter madapter = new homefragmentvpfragmentadapter(getfragmentmanager(),listfragment,listtitle);
  //给viewpager设置适配器
  mviewpager.setadapter(madapter);
  //将tablayout和viewpager关联起来。
  mtablayout.setupwithviewpager(mviewpager);
  //给tablayout设置适配器
  mtablayout.settabsfrompageradapter(madapter);
 }

viewpafer与fragment的适配器

public class homefragmentvpfragmentadapter extends fragmentstatepageradapter {
 list<fragment> listfragment;
 list<string> listtitle;
 public homefragmentvpfragmentadapter(fragmentmanager fm, list<fragment> listfragment, list<string> listtitle) {
  super(fm);
  this.listfragment = listfragment;
  this.listtitle = listtitle;
 }
 @override
 public charsequence getpagetitle(int position) {
  return listtitle.get(position);
 }
 @override
 public fragment getitem(int position) {
  return listfragment.get(position);
 }
 @override
 public int getcount() {
  return listfragment.size();
 }
}

Android使用TabLayou+fragment+viewpager实现滑动切换页面效果

以上所述是小编给大家介绍的android使用tablayou+fragment+viewpager实现滑动切换页面效果,希望对大家有所帮助