Material Design 中 TabLayout 的实现及变化方式

阅读时长 7 分钟读完

Material Design 是 Google 在设计语言上推出的一种框架,它提供了一套全新的视觉设计规范,旨在为制作应用程序提供更加一致、统一的用户体验。在 Material Design 的架构下,TabLayout 是其中的一种重要的组件,用于实现顶部标签栏,可以方便地在标签之间进行切换。

在本文中,我们将通过实例代码的演示,详细描述 TabLayout 的实现及变化方式,并为读者提供学习和指导意义。

TabLayout 的实现

TabLayout 的实现需要通过 TabLayout 和 ViewPager 两个控件实现,其中 TabLayout 用于显示标签栏,ViewPager 则用于实现标签内容的滑动与切换。

布局文件

我们先来看一下布局文件:

-- -------------------- ---- -------
----------------------------------
    -------------------------
    -----------------------------------
    --------------------------------------------

    -------------------------------------------
        ---------------------------
        -----------------------------------
        ------------------------------------
        ------------------------------------------
        --------------------------------------
        ---------------------------------------------
        ------------------------
        ------------------------------------------

------------------------------------

------------------------------------
    ---------------------------
    -----------------------------------
    ------------------------------------ --

在上述布局中,Toolbar 作为一个容器,用于包含 TabLayout。TabLayout 的高度为 wrap_content,使用 app:tabMode 指定了可以滚动的形式(scrollable),方便用户在固定的宽度中滑动 selects。同时控件的背景色使用了 @color/colorPrimary。

ViewPager 则作为标签内容的容器,充满整个屏幕。

Java 代码

接下来,我们需要在 Java 中配置 TabLayout 和 ViewPager 之间的关联关系,具体代码如下:

-- -------------------- ---- -------
-- -- ---- 
------- ------- - ---------------------------
-----------------------------

--------- --------- - -----------------------------

--------- --------- - -----------------------------
-------------- ------- - --- --------------------------------------------

------------------------------

----------------------------------------

在上面代码中,我们首先配置了 Toolbar 作为 Action 栏,然后获取了 TabLayout 和 ViewPager 的实例,利用 MyPagerAdapter 作为 ViewPager 的适配器,最后使用 TabLayout#setupWithViewPager 方法建立了两者之间的联动关系。

TabLayout 的变化方式

TabLayout 除了使用上述的滚动模式之外,还有许多其他的变化方式。

Fixed Tabs

Fixed Tabs 指定了 TabLayout 的 tabMode 为 fixed,使得标签栏中的标签固定在了屏幕中,标签数量比较多的话可以使用这种方式,最多支持 5 个选项。

Scrollable Tabs

当屏幕宽度比较大的时候,Fixed Tabs 无法承载大量的选项,因此我们可以使用 Scrollable Tabs,TabLayout 的 tabMode 为 scrollable,这样即可展示出所有的选项,滑动时,选项也可以根据需要进行垂直或水平滑动。

Icon Tabs

Icon Tabs 指的是在标签上添加图标,可以使用 setIcon() 方法将 Drawable 设置为标签。同时也可以使用图标及文本进行组合。在图标和文本组合的时候,TabLayout 初始的宽度可能会不够,我们可以通过为 TabLayout 设置宽度,使其滚动,来保证所有标签都能展示出来。

-- -------------------- ---- -------
-- ---- ----
-----------------------------------------------------------------
------------------------------------------------ -----
-----------------------------------------------------------------
------------------------------------------------ -----

------------- ---- - ----------------------
-- ----- -- -----
    ---------------------------------

Custom View

有时候,我们需要更加灵活地进行标签的自定义,我们可以使用 setCustomView 方法将自定义的 View 设置为标签。

在使用 custom view 的时候,我们需要注意下,custom view 的使用方式是通过 layout_inflater 加载 xml 文件,并将 view 对象设置给 custom view 的成员变量即可。

在上述代码中,我们通过 setCustomView 方法指定了自定义标签的布局文件 custom_tab_layout.xml,然后通过 getCustomView 获取自定义视图的根布局,最后通过 ImageView.setImageResource() 方法设置了自定义标签的图标。

总结

通过本文的介绍,我们了解了 TabLayout 的实现方式和一些不同的变化效果。不同的 TabLayout 变化方式可以应对不同的设计需求,为用户提供舒适的使用体验。

希望本文能有所帮助,对于需要了解和掌握 Material Design 中的组件,有一定的指导意义。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64efe7d0f6b2d6eab39d1826

纠错
反馈