Fragment和TabLayout使用
效果图:
一、使用Tablayout,首先需要在项目中加入Design包
dependencies { compile 'com.android.support:design:24.1.1' }
二、在activity_main.xml布局文件中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: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="zhengliang.com.tablayout.MainActivity"> <android.support.design.widget.TabLayout android:id="@+id/tab" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" > </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout>
里面一个Tablayout和一个ViewPager就行了
三、MainAndroid里java代码
public class ZhiBoFragment extends BaseFragment { private HomePersenter mshouYFragment; private ImageView image_my; private TabLayout tab_layout; private ViewPager vp; private View view; private List<String> list; private List<Fragment> fragmentList; @Override protected void loadData() { mshouYFragment = new HomePersenter(Urls.BASEURL4, this,PandaZhibBt.class); mshouYFragment.start(); } protected void initView(View view) { image_my = (ImageView) view.findViewById(R.id.image_my); tab_layout = (TabLayout) view.findViewById(R.id.tab_layout); vp = (ViewPager) view.findViewById(R.id.vp); setUserVisibleHint(true); image_my.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), PersonalActivity.class); startActivity(intent); } }); } @Override protected int getFragmentLayoutId() { return R.layout.fragment_zhi_bo; } @Override public void onSucess(Object o) { if (o instanceof PandaZhibBt){ list = new ArrayList<>(); fragmentList = new ArrayList<>(); List<PandaZhibBt.TablistBean> tablist = ((PandaZhibBt) o).getTablist(); for (int i = 0; i < tablist.size(); i++) { list.add(tablist.get(i).getTitle()); } fragmentList.add(new NewFragment()); for (int i = 0; i < tablist.size() - 1; i++) { fragmentList.add(new FuYonFragment(Urls.BASEURLS[i])); } MyPandaZhB myPandaZhB = new MyPandaZhB(getChildFragmentManager(), list, fragmentList); tab_layout.setupWithViewPager(vp); vp.setAdapter(myPandaZhB); } } @Override public void onFaile(String msg) { } @Override public void setPresenter(HomePersenter presenter) { this.mshouYFragment=presenter; } }
我们还需要写一个适配器让ViewPager和TabLayout关联
public class MyAdapterFreg extends FragmentPagerAdapter { private List<String> list; private List<Fragment> fragmentList; public MyAdapterFreg(FragmentManager fm, List<String> list, List<Fragment> fragmentList) { super(fm); this.list = list; this.fragmentList = fragmentList; } public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } @Nullable @Override public CharSequence getPageTitle(int position) { return list.get(position); } }