首先先放一张 运行的效果图,可以实现左右滑动,并且里面的内容也会随着标签的切换而切换
这里是布局文件,使用此布局时我们首先要为程序添加一个依赖,并且要注意版本号要一致,现在我们做安卓开发一般都是使用的 Androidstudio,所以添加依赖也会非常简单,只要在你的APP包下打开build.gradle将代码放在dependencies下 然后build一下项目即可
compile 'com.android.support:design:27.+'
compile 'com.android.support:appcompat-v7:27.+'
<android.support.design.widget.TabLayout android:id="@+id/main_tab" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabSelectedTextColor="@android:color/white" app:tabTextColor="#000000" app:tabIndicatorColor="#FF4081" app:tabGravity="fill" app:tabBackground="@android:color/holo_blue_bright"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/main_viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" />
布局文件也很简单,上面就是一个Tab标签页,并且为标签页设置字体颜色,字体被选中时标签颜色,背景颜色。下面就是一个简单的viewpage控件,等下我们会在后面为它填充数据
程序的整个文件布局情况就是这样
有两个布局界面,一个主的布局和一个为了填充viewpage而创建的fragment布局文件
下面咱们先看一下MainActivity,主要代码如下所示
//找到布局里的Viewpage对象 ViewPager mViewPager = (ViewPager) findViewById(R.id.main_viewpager); //找到布局的tablayout对象 mTabLayout = (TabLayout) findViewById(R.id.main_tab); //获取fragment管理对象 TestViewPagerAdapter adapter = new TestViewPagerAdapter(getSupportFragmentManager()); //为viewpage设置 adapter mViewPager.setAdapter(adapter); //为tablayout设置viewpage mTabLayout.setupWithViewPager(mViewPager);
里面我都加了相应的注释,也并没有什么难以理解的地方,就是在导包是要注意,不要导入了错误的依赖包
接下来我们看一下adapter
public class TestViewPagerAdapter extends FragmentPagerAdapter { private String[] mTitle=new String[]{"时尚","健康","热点"}; //返回一个fragment对象 public TestViewPagerAdapter(FragmentManager fm) { super(fm); } @Override //可以在此方法里传递值至fragment public Fragment getItem(int position) { Fragment fragment=new TestViewPageFragment(); Bundle bundle=new Bundle(); bundle.putString("title", mTitle[position]); fragment.setArguments(bundle); return fragment; } //返回fragment页数 public int getCount() { return mTitle.length; } //给Tab标签添加标签项 public CharSequence getPageTitle(int position) { return mTitle[position]; } }
应该还是比较简单的,没有什么难以理解的地方,每个方法我都加了相应解释,这里主要是为fragment传递相应的值,和设置fragment的页数和标题
然后就是fragment
public class TestViewPageFragment extends Fragment{ Inflater inflater; //设置布局文件 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_1, container, false); } @Override //初始化布局文件 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); TextView text=view.findViewById(R.id.text); String title=getArguments().getString("title"); text.setText(title); } }
这里只有两个方法,一个设置布局文件一个是初始化布局文件,整体来说是比较简单的,因为只是一个简单的了解嘛,很多参数我都是写死的,主要是一个简单的认识fragment的过程,也仅仅是我个人的理解,希望对大家会有帮助
哦,还要一个布局文件,也给大家看一下
<?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"> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> </LinearLayout>