Al hacer clic en la pestaña con HorizontalPager en Android Jetpack Compse, salta a la última pestaña. Agrego el código para ver el problema visible.
Este es mi código ->
data class TabPage(val title: String?, val icon: ImageVector? = null, var screen: (@Composable () -> Unit)? = null) @OptIn(ExperimentalPagerApi::class) @Composable fun SwipeableTabLayout( modifier: Modifier = Modifier, tabPages: List<TabPage> ) { val pagerState = rememberPagerState() val scope = rememberCoroutineScope() Surface(color = Color.White) { Column { TabRow(selectedTabIndex = pagerState.currentPage) { tabPages.forEachIndexed { index, tabPage -> Tab( modifier = modifier, selected = index == pagerState.currentPage, onClick = { scope.launch { pagerState.animateScrollToPage(index) } }, text = tabPage.title?.let { title -> { Text(text = title) } }, icon = tabPage.icon?.let { icon -> { Icon(imageVector = icon, contentDescription = null) } } ) } } HorizontalPager( state = pagerState, count = tabPages.size, content = { page -> tabPages[page].screen?.invoke() }) } } }Y aquí es donde se usa ->
enum class SnackbarType(val value: String) { ERROR("Error"), WARNING("Warning"), SUCCESS("Success"), INFO("Info") } @Composable fun CoreComponentsSnackbarScreen(onNavigate: (Destination) -> Unit) { val tabPages = listOf( TabPage(title = SnackbarType.ERROR.value, screen = { LoadScreen() }), TabPage(title = SnackbarType.WARNING.value, screen = { LoadScreen() }), TabPage(title = SnackbarType.SUCCESS.value, screen = { LoadScreen() }), TabPage(title = SnackbarType.INFO.value, screen = { LoadScreen() }) ) Scaffold( content = { SwipeableTabLayout(tabPages = tabPages, scrollable = true) } ) } @Composable private fun LoadScreen() { Column( modifier = Modifier .fillMaxSize() .verticalScroll(rememberScrollState()) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp), ) { Text(text = "One line") Text(text = "Two lines") Text(text = "One line with action") Text(text = "Two lines with action") } }Si la función LoadScreen() solo carga un texto simple, funciona bien, pero cuando agrega más elementos, al hacer clic salta a la última pestaña
por ejemplo, con este LoadScreen() funciona bien ->
@Composable private fun LoadScreen() { Column( modifier = Modifier .fillMaxSize() .verticalScroll(rememberScrollState()) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp), ) { Text(text = "One line") }El problema existe en la versión 1.5.31 de Kotlin y la versión 1.0.5 de composición con la actualización a la versión 1.6.10 de Kotlin más reciente y la versión de composición relativamente actualizada, error solucionado.