我想使用indicatorColor = Color.Black将TabRow的颜色更改为黑色,但在material3中indicatorColor不再存在

问题描述 投票:0回答:1

默认情况下,所选选项卡下划线颜色为白色,但我想使用“indicatorColor”更改为黑色

但是在材质3中indicatorColor已经存在了还有其他方法吗

图片链接 click here

尝试将所选选项卡的下划线颜色更改为黑色

android kotlin tabs android-jetpack-compose
1个回答
0
投票

在Material 3中,Tab Row具有以下签名

@Composable
fun TabRow(
    selectedTabIndex: Int,
    modifier: Modifier = Modifier,
    containerColor: Color = TabRowDefaults.containerColor,
    contentColor: Color = TabRowDefaults.contentColor,
    indicator: @Composable (tabPositions: List<TabPosition>) -> Unit = @Composable { tabPositions ->
        if (selectedTabIndex < tabPositions.size) {
            TabRowDefaults.SecondaryIndicator(
                Modifier.tabIndicatorOffset(tabPositions[selectedTabIndex])
            )
        }
    },
    divider: @Composable () -> Unit = @Composable {
        Divider()
    },
    tabs: @Composable () -> Unit
)

在 TabRowDefaults 的 secondaryIndicator 方法中,您可以在此处将所需的颜色作为参数传递。 我所做的是,我复制了这个可组合项,它在方法签名中作为默认值传递,添加了我自己的自定义颜色。

TabRow(modifier = Modifier.padding(paddingValues), selectedTabIndex = selectedIndex,
                indicator = {
                    tabPositions ->
                    if (selectedIndex < tabPositions.size) {
                        TabRowDefaults.SecondaryIndicator(
                                Modifier.tabIndicatorOffset(tabPositions[selectedIndex]),
                                color = colorResource(id = R.color.black)
                        )
                    }
                }) 

如果您多次使用 TabRow,那么您可以将 TabRow 包装在您自己的自定义可组合项中,该可组合项接受颜色作为其参数之一。

© www.soinside.com 2019 - 2024. All rights reserved.