Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

260
Vistas
Al hacer clic en la pestaña con HorizontalPager en Android Jetpack Compse, salta a la última pestaña

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") }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda