📌  相关文章
📜  Android TabLayout(1)

📅  最后修改于: 2023-12-03 14:59:15.756000             🧑  作者: Mango

Android TabLayout

TabLayout是Android中常用的一个视图控件,用于实现选项卡切换的功能。它通常和ViewPager配合使用,可以让用户在多个页面之间快速切换。

特点
  • 支持滑动切换和点击切换两种模式;
  • 支持自定义Tab的样式和布局;
  • 支持添加Tab的标题和图标(或同时使用标题和图标);
  • 支持Tab的选中状态和未选中状态的不同样式;
  • 支持Tab的动态添加和删除。
使用步骤
1.添加依赖

在项目的build.gradle文件中添加以下依赖项:

implementation 'com.google.android.material:material:1.4.0'
2.添加TabLayout

在布局文件中添加TabLayout控件:

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
3.创建ViewPager

在代码中创建ViewPager控件,并设置相关的Adapter:

ViewPager viewPager = findViewById(R.id.viewPager);
viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager()));
4.将ViewPager和TabLayout关联起来

使用setupWithViewPager()方法将ViewPager和TabLayout关联起来:

TabLayout tabLayout = findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);
5.添加Tab

调用addTab()方法添加Tab,可以选择图标和标题:

tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_music_note).setText("Music"));
6.响应Tab的选中事件

通过addOnTabSelectedListener()方法添加TabLayout的选中事件监听器,可以在选中某个Tab时执行相应的操作:

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        // Tab被选中时的操作
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
        // Tab被取消选中时的操作
    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {
        // Tab被再次选中时的操作
    }
});
自定义Tab样式

通过实现TabLayout.TabCustomViewProvider接口可以自定义Tab的布局,可以以此实现更为丰富的Tab样式。

public class MyTabCustomViewProvider implements TabLayout.TabCustomViewProvider {
    @Override
    public View getTabCustomView(TabLayout.Tab tab) {
        View view = LayoutInflater.from(tabLayout.getContext()).inflate(R.layout.custom_tab_layout, null);
        TextView textView = view.findViewById(R.id.tab_text);
        textView.setText(tab.getText());
        ImageView imageView = view.findViewById(R.id.tab_icon);
        imageView.setImageResource(R.drawable.ic_music_note);
        return view;
    }
}

将自定义的Tab样式设置给TabLayout:

MyTabCustomViewProvider customViewProvider = new MyTabCustomViewProvider();
tabLayout.setTabCustomViewProvider(customViewProvider);
总结

TabLayout是Android中常用的一个视图控件,可以和ViewPager配合使用实现选项卡切换的功能。使用步骤简单,支持自定义Tab的样式和布局,非常灵活。