TabLayout+ViewPager实现tab和页面联动效果

作者: 才兄说 | 来源:发表于2017-06-09 10:28 被阅读169次

    目录:android.support.design.widget.TabLayout

    xml中:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <android.support.design.widget.TabLayout
            android:id="@+id/toolbar_tl_tab"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:layout_gravity="bottom"
            app:layout_scrollFlags="scroll"
            app:tabIndicatorColor="@android:color/holo_green_light"
            app:tabSelectedTextColor="@android:color/holo_green_light" />
    
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#f0f0f0" />
    
        <android.support.v4.view.ViewPager
            android:id="@+id/vp_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </RelativeLayout>
    

    代码中使用:

    public class MainActivity extends AppCompatActivity {
    
        private TabLayout toolbar_tl_tab;
        private ViewPager vp_container;
        private String[] titles = {"标题1", "标题2", "标题3", "标题4"};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            init();
        }
    
        private void init() {
            toolbar_tl_tab = (TabLayout) findViewById(R.id.toolbar_tl_tab);
            vp_container = (ViewPager) findViewById(R.id.vp_container);
            toolbar_tl_tab.setupWithViewPager(vp_container);
            toolbar_tl_tab.setTabMode(TabLayout.MODE_SCROLLABLE);
            vp_container.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
                @Override
                public Fragment getItem(int position) {
                    return new PageFragment();
                }
    
                @Override
                public CharSequence getPageTitle(int position) {
                    return titles[position];
                }
    
                @Override
                public int getCount() {
                    return titles.length;
                }
            });
        }
    
    }
    

    碎片:PageFragment

    public class PageFragment extends Fragment {
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_page, null);
            return view;
        }
    }
    

    碎片xml:fragment_page.xml

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

    注意:

    1、模式相关
    使用滚动模式,特点是超过屏幕可以滚动显示:

    toolbar_tl_tab.setTabMode(TabLayout.MODE_SCROLLABLE);
    

    使用屏幕等分模式,特点是显示tab的宽度是屏幕等分后的宽度:

    toolbar_tl_tab.setTabMode(TabLayout.MODE_FIXED);
    

    相关文章

      网友评论

        本文标题:TabLayout+ViewPager实现tab和页面联动效果

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