首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何禁用TabRow或Jetpack组合中的选项卡中的波纹效应?

如何禁用TabRow或Jetpack组合中的选项卡中的波纹效应?
EN

Stack Overflow用户
提问于 2022-07-27 19:16:32
回答 2查看 409关注 0票数 2

我想使用TabRow,但是当我单击背景时会产生我不想要的连锁反应。有办法改变这种状况吗?我的标签的selectedContectColor等于相同的背景颜色的页面,但我仍然看到白色涟漪效应。

代码语言:javascript
运行
复制
TabRow(
   modifier = Modifier.height(20.dp),
   selectedTabIndex = selectedIndex,
   indicator = { tabPositions ->
      TabRowDefaults.Indicator(
       modifier = Modifier.customTabIndicatorOffset(
         currentTabPosition = tabPositions[lazyListState.firstVisibleItemIndex]
         tabWidths[lazyListState.firstVisibleItemIndex]
       ),
         color = RED
      )
   },
   backgroundColor = BLACK
) {
    tabList.forEachIndexed{ index, tab ->
     val selected = (selectedIndex == index)
     Tab(
      modifier = Modifier
// Have tried different solutions here where there is a .clickable
// and the indication = null, and set interactionSource = remember{  
//MutableInteractionSource()}
      selected = selected,
      selectedContentColor = BLACK,
      onClick = { 
         animateScrollToItem(selectedIndex)
      },
      text = {
        Text("Text Code")
      }
     )

}

}

您可以在这些文档中看到,selectedContentColor会影响纹波。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-27 20:59:04

波纹是在selectable内定义的Tab修饰符中实现的。

您不能禁用它,但您可以更改基于RippleTheme的波纹的外观。您可以定义一个自定义RippleTheme,并将其应用到您的可组合LocalRippleTheme中。

代码语言:javascript
运行
复制
CompositionLocalProvider(LocalRippleTheme provides NoRippleTheme) {
    //..TabRow()
}

private object NoRippleTheme : RippleTheme {
    @Composable
    override fun defaultColor() = Color.Unspecified

    @Composable
    override fun rippleAlpha(): RippleAlpha = RippleAlpha(0.0f,0.0f,0.0f,0.0f)
}
票数 3
EN

Stack Overflow用户

发布于 2022-07-27 19:24:50

闪烁效应由指示属性处理。把它放进可点击的部分。

您可以创建扩展函数。

代码语言:javascript
运行
复制
inline fun Modifier.noRippleClickable(crossinline onClick: ()->Unit): Modifier = composed {
    clickable(indication = null,
        interactionSource = remember { MutableInteractionSource() }) {
        onClick()
    }
}

然后简单地将Modifier.clickable {}替换为Modifier.noRippleClickable {}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73143512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档