Android 实现 Tab 切换
在 Android 应用开发中,Tab 切换是一种常见的导航方式,通过 Tab 切换,用户可以在不同的界面之间快速切换,提高用户体验,本文将介绍如何在 Android 应用中实现 Tab 切换功能,包括使用ViewPager 和TabLayout。

1. 创建项目
我们需要创建一个新的 Android 项目,打开 Android Studio,选择 "Start a new Android Studio project",然后按照提示完成项目的创建。
2. 添加依赖项
在项目的build.gradle 文件中,添加以下依赖项:
dependencies {
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
}
这些依赖项将为我们提供TabLayout 和ViewPager2 的功能。
3. 布局文件
在res/layout/activity_main.xml 中,添加TabLayout 和ViewPager2 控件:

<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/tabLayout"/>
</RelativeLayout>
4. 创建适配器
创建一个FragmentStateAdapter 子类,用于管理不同的 Fragment:
import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; import java.util.ArrayList; import java.util.List; public class MyFragmentAdapter extends FragmentStateAdapter { private final List<Fragment> mFragmentList = new ArrayList<>(); private final List<String> mFragmentTitleList = new ArrayList<>(); public MyFragmentAdapter(@NonNull FragmentActivity fragmentActivity) { super(fragmentActivity); } @NonNull @Override public Fragment createFragment(int position) { return mFragmentList.get(position); } @Override public int getItemCount() { return mFragmentTitleList.size(); } public void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment); mFragmentTitleList.add(title); } }
5. 创建 Fragment
创建几个简单的 Fragment,例如FragmentOne 和FragmentTwo:
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class FragmentOne extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_one, container, false);
}
}
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class FragmentTwo extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_two, container, false);
}
}
6. 设置适配器和 TabLayout
在MainActivity 中,设置适配器和TabLayout:
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import android.os.Bundle;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
private ViewPager2 viewPager;
private TabLayout tabLayout;
private MyFragmentAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.viewPager);
tabLayout = findViewById(R.id.tabLayout);
adapter = new MyFragmentAdapter(this);
adapter.addFragment(new FragmentOne(), "Tab 1");
adapter.addFragment(new FragmentTwo(), "Tab 2");
viewPager.setAdapter(adapter);
new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> tab.setText(adapter.getPageTitle(position))).attach();
}
}
7. 运行项目

你可以运行项目,并在模拟器或真实设备上看到 Tab 切换效果,用户可以通过点击不同的 Tab 来切换不同的 Fragment。
以上内容就是解答有关“android实现tab切换”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...