美文网首页
ViewPager+TabLayout+Fragment最简单的

ViewPager+TabLayout+Fragment最简单的

作者: Gear_033e | 来源:发表于2017-11-25 16:50 被阅读37次

    首先是布局文件
    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android">
    
        <LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:background="#ffffff"
                android:orientation="vertical">
                <android.support.design.widget.TabLayout
                    android:id="@+id/tab_gank"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    app:tabBackground="@drawable/ripple_tab_bg"
                    app:tabIndicatorColor="#ffce3d3a"
                    app:tabSelectedTextColor="#ffce3d3a"
                    app:tabTextColor="#585858" />
    
            </LinearLayout>
    
            <android.support.v4.view.ViewPager
                android:id="@+id/vp_gank"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#fff2f4f5">
    
            </android.support.v4.view.ViewPager>
    
        </LinearLayout>
    </layout>
    

    fragment.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="afs"/>
    
    </LinearLayout>
    

    步骤1
    重写FragmentAdapter

    public class MyFragmentAdapter extends FragmentPagerAdapter {
    
        List<Fragment> list;
        List<String> title;
    
        public MyFragmentAdapter(FragmentManager fm) {
            super(fm);
        }
    
        public MyFragmentAdapter(FragmentManager fm, List<Fragment> list, List<String> title) {
            super(fm);
            this.list = list;
            this.title = title;
        }
    
        @Override
        public Fragment getItem(int position) {
            return list.get(position);
        }
    
        @Override
        public int getCount() {
            return list.size();
        }
    
    /*让TabLayout能获取到title*/
        @Override
        public CharSequence getPageTitle(int position) {
            return title.get(position);
        }
    }
    

    步骤2
    viewpager设置adapter

            MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager(), fragments, titleList);
            binding.vpGank.setAdapter(adapter);
    

    步骤3
    设置TabLayout

            binding.tabGank.setTabMode(TabLayout.MODE_FIXED);
            binding.tabGank.setupWithViewPager(binding.vpGank);//与viewpager联系起来
    

    完整的MainActivity

    public class MainActivity extends AppCompatActivity {
    
    
        public ActivityMainBinding binding;
        public List<Fragment> fragments;
        public List<String> titleList;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            binding = DataBindingUtil.setContentView(MainActivity.this, R.layout.activity_main);
            initFragmentList();
            initViewPager();
        }
    
        public void initFragmentList() {
            fragments = new ArrayList<>();
            titleList = new ArrayList<>();
            fragments.add(new MyFragment1());
            fragments.add(new MyFragment1());
            fragments.add(new MyFragment1());
            titleList.add("1");
            titleList.add("2");
            titleList.add("3");
        }
    
        public void initViewPager() {
            MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager(), fragments, titleList);
            binding.vpGank.setAdapter(adapter);
            //adapter.notifyDataSetChanged();
            binding.tabGank.setTabMode(TabLayout.MODE_FIXED);
            binding.tabGank.setupWithViewPager(binding.vpGank);
        }
    }
    

    完成啦!

    相关文章

      网友评论

          本文标题:ViewPager+TabLayout+Fragment最简单的

          本文链接:https://www.haomeiwen.com/subject/prpcbxtx.html