Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Las listas les permiten a los usuarios seleccionar un elemento de un conjunto de opciones en dispositivos Wear OS.
Muchos dispositivos Wear OS usan pantallas redondas, lo que dificulta la visualización de los elementos de la lista que aparecen cerca de la parte inferior y superior de la pantalla. Por este motivo, Compose para Wear OS incluye una versión de la clase LazyColumn llamada TransformingLazyColumn, que admite animaciones de escalamiento y transformación.
Cuando los elementos se mueven hacia los bordes, se hacen más pequeños y se atenúan.
Para agregar un efecto de desplazamiento y ajuste de escala, usa Modifier.transformedHeight para permitir que Compose calcule el cambio de altura a medida que el elemento se desplaza por la pantalla y transformation = SurfaceTransformation(transformationSpec) para aplicar los efectos visuales, incluido el ajuste de escala visual del elemento para que coincida con el anterior.
Usa un TransformationSpec personalizado para los componentes que no toman transformation como parámetro, por ejemplo, Text.
En la siguiente animación, se muestra cómo cambian el tamaño y la transparencia de un elemento a medida que se mueve por la pantalla:
En el siguiente fragmento de código, se muestra cómo crear una lista con el diseño TransformingLazyColumn para crear contenido que se vea bien en una variedad de tamaños de pantalla de Wear OS. Por ejemplo, en el siguiente código de muestra, se agregará el padding necesario a los primeros y últimos elementos de la lista que se establecen en el contentPadding del TransformingLazyColumn. Para que se muestre el indicador de desplazamiento, comparte el columnState entre el ScreenScaffold y el TransformingLazyColumn:
valcolumnState=rememberTransformingLazyColumnState()valcontentPadding=rememberResponsiveColumnPadding(first=ColumnItemType.ListHeader,last=ColumnItemType.Button,)valtransformationSpec=rememberTransformationSpec()ScreenScaffold(scrollState=columnState,contentPadding=contentPadding){contentPadding->
TransformingLazyColumn(state=columnState,contentPadding=contentPadding){item{ListHeader(modifier=Modifier.fillMaxWidth().transformedHeight(this,transformationSpec),transformation=SurfaceTransformation(transformationSpec)){Text(text="Header")}}// ... other itemsitem{Button(modifier=Modifier.fillMaxWidth().transformedHeight(this,transformationSpec),transformation=SurfaceTransformation(transformationSpec),onClick={/* ... */},icon={Icon(imageVector=Icons.Default.Build,contentDescription="build",)},){Text(text="Build",maxLines=1,overflow=TextOverflow.Ellipsis,)}}}}
Si necesitas agregar un comportamiento de ajuste y desplazamiento, te sugerimos que uses ScalingLazyColumn. Este efecto ayuda a los usuarios a navegar con mayor precisión por los elementos de una lista y, a la vez, agiliza su desplazamiento por listas largas.
Para agregar este efecto a la versión de Horologist de ScalingLazyColumn, establece el parámetro rotaryMode de columnState en RotaryWithSnap, como se muestra en el siguiente fragmento de código:
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-08-30 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-08-30 (UTC)"],[],[],null,["Compose for Wear OS Material version 2.5 3\n\n*** ** * ** ***\n\nLists let users select an item from a set of choices on Wear OS devices.\n\n\nMany Wear OS devices use round screens, which makes it more difficult to see\nlist items that appear near the top and bottom of the screen. For this reason,\nCompose for Wear OS includes a version of the `LazyColumn` class called\n[`TransformingLazyColumn`](/reference/kotlin/androidx/wear/compose/foundation/lazy/package-summary?#TransformingLazyColumn(androidx.compose.ui.Modifier,androidx.wear.compose.foundation.lazy.TransformingLazyColumnState,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior,androidx.compose.foundation.OverscrollEffect,kotlin.Function1)), which supports scaling and morphing animations.\nWhen items move to the edges, they get smaller and fade out.\n\nIn order to add a scaling and scrolling effect, use `Modifier.transformedHeight`\nto allow Compose to calculate the height change as the item scrolls through the\nscreen and `transformation = SurfaceTransformation(transformationSpec)` to apply\nthe visual effects, including scaling down the item visually to match the\nprevious.\nUse a custom [`TransformationSpec`](/reference/kotlin/androidx/wear/compose/material3/lazy/TransformationSpec) for components which don't take\n`transformation` as a parameter, for example `Text`.\n\n\nThe following animation shows how an element's size and transparency changes as\nit moves along the screen:\n\nThe following code snippet shows how to create a list using [`TransformingLazyColumn`](/reference/kotlin/androidx/wear/compose/foundation/lazy/package-summary?#TransformingLazyColumn(androidx.compose.ui.Modifier,androidx.wear.compose.foundation.lazy.TransformingLazyColumnState,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,androidx.wear.compose.foundation.rotary.RotaryScrollableBehavior,androidx.compose.foundation.OverscrollEffect,kotlin.Function1)) layout to create content that [looks great on a variety of Wear OS screen sizes](/training/wearables/compose/screen-size), for example in the following sample code, it will add the necessary padding to the first and last elements of the list which are set in the `contentPadding` of the `TransformingLazyColumn`. In order for the scroll indicator to be shown, share the `columnState` between the `ScreenScaffold` and the `TransformingLazyColumn`:\n\n\u003cbr /\u003e\n\n```kotlin\nval columnState = rememberTransformingLazyColumnState()\nval contentPadding = rememberResponsiveColumnPadding(\n first = ColumnItemType.ListHeader,\n last = ColumnItemType.Button,\n)\nval transformationSpec = rememberTransformationSpec()\nScreenScaffold(\n scrollState = columnState,\n contentPadding = contentPadding\n) { contentPadding -\u003e\n TransformingLazyColumn(\n state = columnState,\n contentPadding = contentPadding\n ) {\n item {\n ListHeader(\n modifier = Modifier.fillMaxWidth().transformedHeight(this, transformationSpec),\n transformation = SurfaceTransformation(transformationSpec)\n ) {\n Text(text = \"Header\")\n }\n }\n // ... other items\n item {\n Button(\n modifier = Modifier.fillMaxWidth().transformedHeight(this, transformationSpec),\n transformation = SurfaceTransformation(transformationSpec),\n onClick = { /* ... */ },\n icon = {\n Icon(\n imageVector = Icons.Default.Build,\n contentDescription = \"build\",\n )\n },\n ) {\n Text(\n text = \"Build\",\n maxLines = 1,\n overflow = TextOverflow.Ellipsis,\n )\n }\n }\n }\n}https://github.com/android/snippets/blob/f95ab59fad80aeaf5d6a90bab8a01a126f20f44e/wear/src/main/java/com/example/wear/snippets/m3/list/List.kt#L53-L96\n```\n\nAdd a snap-and-fling effect If you need to add a snap-and-fling behavior, we suggest to use `ScalingLazyColumn`. This effect helps users more precisely navigate through the items in a list while also helping them move more quickly through a long list.\n\nTo add this effect to the Horologist's version of the [`ScalingLazyColumn`](https://google.github.io/horologist/compose-layout/),\nset the `rotaryMode` parameter of `columnState` to\n[`RotaryWithSnap`](https://google.github.io/horologist/api/compose-layout/com.google.android.horologist.compose.rotaryinput/rotary-with-snap.html), as shown in the following code snippet: \n\n```kotlin\nval columnState = rememberResponsiveColumnState(\n // ...\n // ...\n rotaryMode = ScalingLazyColumnState.RotaryMode.Snap\n)\nScreenScaffold(scrollState = columnState) {\n ScalingLazyColumn(\n columnState = columnState\n ) {\n // ...\n // ...\n }\n}https://github.com/android/snippets/blob/f95ab59fad80aeaf5d6a90bab8a01a126f20f44e/wear/src/main/java/com/example/wear/snippets/list/List.kt#L72-L103\n```\n\nRecommended for you\n\n- Note: link text is displayed when JavaScript is off\n- [Compose for Wear OS Codelab](/codelabs/compose-for-wear-os)\n- [Lists and Grids](/develop/ui/compose/lists)\n- [Using Views in Compose](/develop/ui/compose/migrate/interoperability-apis/views-in-compose)"]]