自定义可绘制为 com.google.android.material.tabs.TabLayout 的 tabIndicator 不起作用

Div*_*hal 5 android drawable android-tablayout

我正在尝试将自定义 drawable 设置为 tabIndicator,如下所示

<com.google.android.material.tabs.TabLayout
            android:id="@+id/tab_layout"
            app:tabIndicatorFullWidth="false"
            app:layout_scrollFlags="scroll"
            app:tabIndicator="@drawable/tab_layout_indicator_selected"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)

drawable/tab_layout_indicator_selected

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="2dp" />
            <gradient
                android:angle="180"
                android:endColor="#FF00FF"
                android:startColor="#00FFFF"
                android:type="linear" />
            <size
                android:width="60dp"
                android:height="4dp" />
        </shape>
    </item>
    <item android:gravity="end">
        <shape android:shape="oval">
            <solid android:color="#FF00FF" />
            <size
                android:width="4dp"
                android:height="4dp" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

这将指示器的形状显示为我的可绘制对象,但它的颜色始终保持灰色,而不是可绘制对象中给出的颜色。

小智 6

使用自定义 drawable 时我遇到了同样的问题。为我修复的是设置选项卡指示器高度。

app:tabIndicatorHeight="2dp"
Run Code Online (Sandbox Code Playgroud)


小智 1

选项卡指示器颜色有一个单独的属性:

<com.google.android.material.tabs.TabLayout
    ...
    app:tabIndicatorColor="?colorPrimary"
/>
Run Code Online (Sandbox Code Playgroud)

  • 我不想提供简单的平面颜色我想传递自定义渐变可绘制 (2认同)