使用TabLayout、ViewPager和Fragment实现顶部菜单可滑动切换
效果图如下
首先,要使用控件需要添加design library,在AndroidStudio中添加
compile 'com.android.support:design:23.4.0'
然后是布局文件
<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"tools:context="com.lg.tablayoutdemo.MainActivity"><android.support.design.widget.TabLayoutandroid:id="@+id/tab_layou"android:layout_width="match_parent"app:tabIndicatorColor="@android:color/holo_blue_light"app:tabTextColor="@android:color/darker_gray"app:tabSelectedTextColor="@android:color/black"android:layout_height="wrap_content"/><android.support.v4.view.ViewPagerandroid:id="@+id/view_pager"android:layout_below="@id/tab_layou"android:layout_width="match_parent"android:layout_height="match_parent"/></RelativeLayout>
其中TabLayout中tabIndicatorColor属性为标签底部下滑线颜色,tabTextColor为标签未选中时字体颜色,tabSelectedTextColor为选中时字体颜色
自定一个FragmentPagerAdapter适配器
publicclassMyViewPagerAdapterextendsFragmentPagerAdapter{privateList<Fragment>fragments;privateString[]titles;publicMyViewPagerAdapter(FragmentManagerfm,String[]titles,List<Fragment>fragments){super(fm);this.titles=titles;this.fragments=fragments;}@OverridepublicFragmentgetItem(intarg0){returnfragments.get(arg0);}@OverridepublicCharSequencegetPageTitle(intposition){returntitles[position];}@OverridepublicintgetCount(){returnfragments.size();}}
Fragment代码我就不贴了,会在下面奉上源码地址
publicclassMainActivityextendsAppCompatActivityimplementsTabLayout.OnTabSelectedListener{privateTabLayouttabLayout;privateViewPagerviewPager;privateMyViewPagerAdapterviewPagerAdapter;//TabLayout标签privateString[]titles=newString[]{"ANDROID","JAVA","C#","PHP"};privateList<Fragment>fragments=newArrayList<>();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}privatevoidinit(){tabLayout=(TabLayout)findViewById(R.id.tab_layou);viewPager=(ViewPager)findViewById(R.id.view_pager);//设置TabLayout标签的显示方式tabLayout.setTabMode(TabLayout.MODE_FIXED);//循环注入标签for(Stringtab:titles){tabLayout.addTab(tabLayout.newTab().setText(tab));}//设置TabLayout点击事件tabLayout.setOnTabSelectedListener(this);fragments.add(newAndroidFragment());fragments.add(newJavaFragment());fragments.add(newCshapFragment());fragments.add(newPhpFragment());viewPagerAdapter=newMyViewPagerAdapter(getSupportFragmentManager(),titles,fragments);viewPager.setAdapter(viewPagerAdapter);tabLayout.setupWithViewPager(viewPager);}@OverridepublicvoidonTabSelected(TabLayout.Tabtab){viewPager.setCurrentItem(tab.getPosition());}@OverridepublicvoidonTabUnselected(TabLayout.Tabtab){}@OverridepublicvoidonTabReselected(TabLayout.Tabtab){}}
以上是核心代码,至此功能就实现了,当然也可 以根据不同的需求进行改动
源码地址:http://down.51cto.com/data/2221954
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。