1. 程式人生 > >TabLayout和動態生成fragment的個數

TabLayout和動態生成fragment的個數

          1.在佈局中先書寫tablayout的佈局,以及與之相對應的viewpager

<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:id="@+id/host_tab"
app:tabIndicatorColor="#ff00"
app:tabIndicatorHeight="3dp"
app:tabSelectedTextColor="#ff00"
android:layout_marginRight="40dp"
app:tabTextColor="#000"
android
:layout_height="48dp"> </android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/host_viewpager"
></android.support.v4.view.ViewPager>

          2.在程式碼中書寫以下程式碼

   先找到控制元件的方法

tab = (TabLayout) view.findViewById(R.id.host_tab);
vp = (ViewPager) view.findViewById(R.id.host_viewpager);

以及設定tablayout的屬性因為他繼承的scrollview
tab.setTabMode(TabLayout.MODE_SCROLLABLE);

    給tablayout設定的title封裝到集合中判斷集合的數量來生成與之相對應的framgent

for (int i=0;i<list.size();i++){
     Fragment fragment=new 
Tab_fragment(); //動態生成fragment的同時可以傳遞相傳遞的資料  Bundle bundle=new Bundle(); bundle.putString("url",url.get(i)); fragment.setArguments(bundle); //在把fragment新增進集合中  flist.add(fragment); } //viewpager的介面卡
vp.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {
    @Override
public Fragment getItem(int position) {
        return flist.get(position);
    }

    @Override
public int getCount() {
        return flist.size();
    }
    //重寫下面這個方法來使fragment和tablayout的title相關聯
@Override
public CharSequence getPageTitle(int position) {
        return list.get(position);
    }
});
   把viewpager設定到tablayout上
 tab.setupWithViewPager(vp);

在Fragment中使用    接收值

Bundle bundle=  getArguments();
 url=bundle.getString("url");