android 如何在Jetpack Compose(material3)中使用TabRowDefaults修复此错误?

ut6juiuv  于 2023-06-27  发布在  Android
关注(0)|答案(1)|浏览(154)

我在Jetpack Compose中的TabRow有一个问题,下面是代码的片段:

  1. TabRow(
  2. selectedTabIndex = tabIndex,
  3. indicator = { pos ->
  4. TabRowDefaults.Indicator(Modifier.pagerTabIndicatorOffset(pagerState, pos))
  5. },
  6. ){
  7. tabList.forEachIndexed{index, text ->
  8. Tab(selected = false, onClick = {
  9. coroutineScope.launch{
  10. pagerState.animateScrollToPage(index)
  11. }
  12. }, text = {
  13. Text(text = text)
  14. })
  15. }
  16. }

问题是,这里的参数“pos”用红色下划线(

)。我不知道为什么,上面写着“类型不匹配:推断的类型为List<androidx.compose.material3.TabPosition>,但应为<androidx.compose.material.TabPosition>List”。
我试着删除“pos”并用“it”替换它,我也试着在“import TabRowDefaults”中用material替换material3。如何修复此错误?

7qhs6swi

7qhs6swi1#

你可以使用这个:

  1. import androidx.compose.material3.TabRow
  2. import androidx.compose.material3.TabRowDefaults
  3. import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset
  4. TabRow(
  5. selectedTabIndex = selectedTabIndex,
  6. modifier = modifier,
  7. containerColor = Color.Transparent,
  8. contentColor = MaterialTheme.colorScheme.onSurface,
  9. indicator = { tabPositions ->
  10. TabRowDefaults.Indicator(
  11. modifier = Modifier.tabIndicatorOffset(tabPositions[selectedTabIndex]),
  12. height = 2.dp,
  13. color = MaterialTheme.colorScheme.primary
  14. )
  15. },
  16. tabs = {
  17. ...
  18. }
  19. )
展开查看全部

相关问题