TabLayout和動態生成fragment的個數
阿新 • • 發佈:2019-02-05
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=newTab_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");