原创
android之ViewPager与TabLayout
使用 TabLayout 很容易实现选项卡的功能。这里将结合 ViewPager、Fragment、TabLayout实现一个具有选项卡功能的程序。本例再上篇讲解的ViewPager与Fragment实例上修改,请结合上篇实例参考。
要实现这样一个程序,首先需要在布局文件中加入 TabLayout。MainActivity中对应的布局文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <com.google.android.material.tabs.TabLayout android:id="@+id/tab" app:tabMode="fixed" android:layout_width="match_parent" android:layout_height="wrap_content" /> <androidx.viewpager.widget.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"/></LinearLayout>复制代码完成这些后,3个Fragment类文件不变,修改适配器类:
package com.rfstar.viewpagertest03;
import androidx.fragment.app.Fragment;import androidx.fragment.app.FragmentManager;import androidx.fragment.app.FragmentPagerAdapter;import java.util.List;public class FragmentAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; private List<String> tabList; public FragmentAdapter(FragmentManager fm,List<Fragment>fragmentList,List<String>tabList) { super(fm); this.fragmentList=fragmentList; this.tabList=tabList; } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } @Override public CharSequence getPageTitle(int position) { return tabList.get(position); }}复制代码通过观察修改之后的适配器类可以发现其实就是加入了一个存储选项卡内容的列表以及一个获取选项卡内容的方法。MainActivity的代码如下:
package com.rfstar.viewpagertest03;
import androidx.appcompat.app.AppCompatActivity;import androidx.fragment.app.Fragment;import androidx.fragment.app.FragmentManager;import androidx.viewpager.widget.ViewPager;import android.os.Bundle;import android.view.View;import android.widget.TableLayout;import com.google.android.material.tabs.TabLayout;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fragmentManager=getSupportFragmentManager(); List<Fragment> fragments=new ArrayList<Fragment>(); fragments.add(new FirstFragment()); fragments.add(new SecondFragment()); fragments.add(new ThirdFragment()); List<String> tabs=new ArrayList<>(); tabs.add("首页"); tabs.add("社区"); tabs.add("新闻"); FragmentAdapter fragmentAdapter=new FragmentAdapter(fragmentManager,fragments,tabs); ViewPager viewPager=(ViewPager)findViewById(R.id.viewPager); viewPager.setAdapter(fragmentAdapter); TabLayout tabLayout= (TabLayout) findViewById(R.id.tab); tabLayout.setupWithViewPager(viewPager); }}复制代码此时运行程序就出现了选项卡功能,不管是点击选项卡标签还是滑动界面都可以进行界面切换,效果如下图:
![](https://static.assets-stash.eet-china.com/album/202106/17/113737n619rh4sqqzssuh5.png)
![](https://static.assets-stash.eet-china.com/album/202106/17/113742ddgg6ld3usl2hbsn.png)
![](https://static.assets-stash.eet-china.com/album/202106/17/113746fh9nnnn9n32zbtp9.png)
android studio工具及手机模拟器以及更多工程源代码下载请前往微信公众号:大鸟科创空间,回复:android studio即可获取。
![](https://static.assets-stash.eet-china.com/album/202106/17/113759qn3emz5htj2fx2uh.jpg)
作者: 大鸟科创空间, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3949041.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论