例:
顶部标题TabLayout点击切换Fragment
顶部横向滑动菜单
加依赖:(TabLayout )
dependencies { implementation 'com.android.support:design:27.0.2' }
主方法:
public class Main2Fragment extends Fragment { private TabLayout tabLayout; private ViewPager viewPager; ArrayList<Fragment> fragmentList; //放所有的fragment ArrayList<String> titleList ;// tablayout的标题 private View view; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = View.inflate(getActivity(), R.layout.fragment_main2, null); tabLayout = (TabLayout) view.findViewById(R.id.tabLayout); viewPager = (ViewPager) view.findViewById(R.id.viewPager); Log.e("test", "---------------------onCreateView"); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); initData(); Log.e("test", "---------------------test log"); viewPager.setAdapter(new MAdapter(getFragmentManager())); tabLayout.setTabMode(TabLayout.MODE_FIXED); //让viewpager和顶部标题关联 tabLayout.setupWithViewPager(viewPager); } private void initData() { fragmentList = new ArrayList<Fragment>(); titleList = new ArrayList<String>(); if (fragmentList.size()==0){ fragmentList.add(new Child1Fragment()); fragmentList.add(new Child2Fragment()); fragmentList.add(new Child3Fragment()); } if (titleList.size()==0){ titleList.add("Child1Fragment"); titleList.add("Child2Fragment"); titleList.add("Child3Fragment"); } } private class MAdapter extends FragmentPagerAdapter { public MAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } //一定要重写这个返回标题的方法; @Override public CharSequence getPageTitle(int position) { return titleList.get(position); } } }
fragment_main2 :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.TabLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/tabLayout"/> <android.support.v4.view.ViewPager android:layout_height="0dp" android:layout_width="fill_parent" android:id="@+id/viewPager" android:layout_weight="1"/> </LinearLayout>
Child1Fragment
public class Child1Fragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = View.inflate(getActivity(), R.layout.child1_fragment, null); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } }child1_fragment 布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff00"> </RelativeLayout>