顶部标题TabLayout点击切换Fragment(可以滑动切换) 顶部标题TabLayout点击切换Fragment 顶部横向滑动菜单

例:


顶部标题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>


猜你喜欢

转载自blog.csdn.net/jun_tong/article/details/80630592