返回

Android TabLayout 自定义 Indicator 尽显个性化

Android

Android 开发中 Tablayout 指示器的自定义

什么是 Tablayout?

Tablayout 是 Android 开发中一个非常有用的组件,它允许我们在界面中轻松地创建带有选项卡的界面。使用 Tablayout 默认显示的 Indicator 是一个下划线,可以通过 tabIndicator 属性设置 Indicator 的位置,可选值为 bottom (底部,也是 Tablayout 默认的 Indicator 位置)、top (顶部)、center (居中)和 stretch (拉伸铺满选项卡)。

但是,如果开发者希望 Indicator 能够显示出更具个性化的效果,就需要对 Tablayout 进行 Indicator 自定义。

Indicator 自定义步骤

1、创建 Drawable 文件

Indicator 自定义的关键是创建一个可绘制的 Drawable 文件。这个 Drawable 文件将决定 Indicator 的外观和行为。

2、在 Tablayout 中使用 Drawable

创建好Drawable 文件后,可以通过 tabIndicator 属性将 Drawable 指定为 Indicator

Indicator 自定义实现

Indicator 自定义过程相对简单,这里我们以一个 圆形 Indicator 为例进行演示。

1、创建 Drawable 文件

<resources>
    <layer-list>
        <item>
            <shape android:shape="oval">
                <solid android:color="#FFFFFF" />
                <size android:height="10dp" android:width="10dp" />
            </shape>
        </item>
    </layer-list>
</resources>

以上 Drawable 文件**:

  • 创建一个椭圆 形的Shape
  • Shape 的颜色设置为白色
  • Shape 的大小设置为10dp x 10dp

2、在 Tablayout 中使用 Drawable

<com.google.android.material.tabs.Tablayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.tabs.Tab
        android:text="Tab 1" />

    <com.google.android.material.tabs.Tab
        android:text="Tab 2" />

    <com.google.android.material.tabs.Tab
        android:text="Tab 3" />

</com.google.android.material.tabs.Tablayout>

Tablayout 中使用创建好的 Drawable

app:tabIndicator="#tab_indicator"

其中,#tab_indicator 是创建的 Drawable 文件的 ID

扩展和改进

1、支持动画效果

Indicator 还支持动画效果 ,可以通过 tabIndicatorAnimationMode 属性设置动画效果

tabIndicatorAnimationMode 支持两种动画效果

  • scaleIndicator 在被选中时会放大
  • fadeIndicator 在被选中时会淡入

2、设置Indicator 的宽度

可以使用 tabIndicatorWidth 属性设置Indicator宽度

3、设置Indicator 的高度

可以使用 tabIndicatorHeight 属性设置Indicator高度

实例

以下代码段演示如何使用 Indicator 自定义来创建圆形 IndicatorTablayout

<com.google.android.material.tabs.Tablayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.tabs.Tab
        android:text="Tab 1" />

    <com.google.android.material.tabs.Tab
        android:text="Tab 2" />

    <com.google.android.material.tabs.Tab
        android:text="Tab 3" />

</com.google.android.material.tabs.Tablayout>

Indicator 自定义 Drawable 文件:

<resources>
    <layer-list>
        <item>
            <shape android:shape="oval">
                <solid android:color="#FFFFFF" />
                <size android:height="10dp" android:width="10dp" />
            </shape>
        </item>
    </layer-list>
</resources>

Tablayout 中使用创建好的 Drawable

app:tabIndicator="#tab_indicator"
app:tabIndicatorAnimationMode="scale"
app:tabIndicatorWidth="20dp"
app:tabIndicatorHeight="10dp"

这样就成功地创建了圆形 IndicatorTablayout

优势

  • Indicator 自定义允许开发者创建更具个性化美感 的界面。
  • Indicator 自定义支持动画效果 ,可以增加界面交互性。
  • Indicator 自定义代码相对简单,开发者可以轻松地根据需要进行修改。

劣势

  • Indicator 自定义需要创建 Drawable 文件,可能增加工作量。
  • Indicator 自定义可能会增加应用程序的 UI 复杂性,需要开发者注意避免过度设计。

要求

  • Android Studio
  • Android SDK
  • 基本的 Android 开发能力

常见问题

1、如何设置 Indicator背景色

可以使用 tabIndicatorColor 属性设置 Indicator背景色

2、如何创建 Indicator渐变色 效果?

可以使用 tabIndicatorColor 属性设置Indicator渐变色 效果,需要使用ColorStateList 来设置渐变色

3、如何将 Indicator 自定义应用于多个 Tablayout

可以将 Indicator 自定义 Drawable 文件添加到 style 中,然后在使用 Tablayout 中应用 style

4、如何创建 Indicator抖动 效果?

可以使用 tabIndicatorAnimationMode 属性设置 Indicator抖动 效果,设置为pulsate 即可。

5、如何创建 Indicator滑块 效果?

可以使用 tabIndicatorAnimationMode 属性设置 Indicator滑块 效果,设置为slide 即可。

结论

Indicator 自定义是 Tablayout 中一个非常有用的功能,可以帮助开发者创建更具个性化和美感的界面。通过遵循本文中概述的步骤,开发者可以轻松地自定义 Indicator 的外观和行为,从而为应用程序添加额外的风格和交互性。