这是效果图
点击标签,手指左右滑动都是可以实现翻页的。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns: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"
android:orientation="vertical"
tools:context=".MainActivity">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="12"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;
FragmentAdapter adapter;
//Fragment队列和标题队列
private List<Fragment> fragmentList;
private List<String> titleList;
//4个Fragment
private Fragment firstFragment;
private Fragment secondFragment;
private Fragment thirdFragment;
private Fragment fourthFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();//初始化
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
private void initView() {
tabLayout = findViewById(R.id.tab);
viewPager = findViewById(R.id.viewpager);
firstFragment = new FirstFragment();
secondFragment = new SecondFragment();
thirdFragment = new ThirdFragment();
fourthFragment = new FourthFragment();
fragmentList = new ArrayList<Fragment>();
titleList = new ArrayList<String>();
fragmentList.add(firstFragment);
fragmentList.add(secondFragment);
fragmentList.add(thirdFragment);
fragmentList.add(fourthFragment);
titleList.add("第一页");
titleList.add("第二页");
titleList.add("第三页");
titleList.add("第四页");
adapter = new FragmentAdapter(getSupportFragmentManager(), fragmentList, titleList);
}
}
FragmentAdapter.java
public class FragmentAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;
private List<String> titleList;
public FragmentAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> titleList) {
super(fm);
this.fragmentList = fragmentList;
this.titleList = titleList;
}
public Fragment getItem(int position) {
return fragmentList.get(position);
}
public int getCount() {
return fragmentList.size();
}
//这个方法是为了显示名称
@Override
public CharSequence getPageTitle(int position) {
return titleList.get(position);
}
}
FirstFragment.java
public class FirstFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView view = new TextView(getActivity());
view.setTextSize(60);
view.setText("**********\n这是第一页\n*************");
return view;
}
}
其他注意事项
- 其他3个Fragment仿照FirstFragment来写即可
- TabLayout需要添加依赖 implementation ‘com.google.android.material:material:1.0.0’