TabH
os
t已经被弃用,可以使用ViewPager和TabLayout来替代。下面是一个简单的示例代码:
在布局文件中定义ViewPager和TabLayout:
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
</androidx.constraintlayout.widget.ConstraintLayout>
在Activity中设置ViewPager和TabLayout:
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.viewPager);
tabLayout = findViewById(R.id.tabLayout);
// 创建PagerAdapter
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(), FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
// 设置PagerAdapter到ViewPager
viewPager.setAdapter(pagerAdapter);
// 将ViewPager与TabLayout关联
tabLayout.setupWithViewPager(viewPager);
// 自定义PagerAdapter
private class PagerAdapter extends FragmentPagerAdapter {
private String[] tabTitles = {"Tab1", "Tab2", "Tab3"};
public PagerAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, behavior);
@NonNull
@Override
public Fragment getItem(int position) {
// 返回对应位置的Fragment
return new MyFragment();
@Override
public int getCount() {
// 返回Fragment的数量
return tabTitles.length;
@Nullable
@Override
public CharSequence getPageTitle(int position) {
// 返回对应位置的Tab标题
return tabTitles[position];
// 自定义Fragment
public static class MyFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
// 初始化Fragment布局
return view;
上述代码中,PagerAdpater继承自FragmentPagerAdapter,用于管理Tab对应的Fragment。每个Tab对应一个Fragment,通过重写PagerAdapter的getItem()方法返回对应位置的Fragment。可以根据具体需求自定义Fragment布局和逻辑。
注意:上述示例使用了AndroidX库中的ViewPager和TabLayout,如果你的项目使用的是Support库,需要将相关类替换为Support库中的对应类。