با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
فهرستها به کاربران اجازه میدهند یک مورد را از میان مجموعهای از گزینههای موجود در دستگاههای Wear OS انتخاب کنند.
بسیاری از دستگاههای Wear OS از صفحهنمایشهای گرد استفاده میکنند، که دیدن موارد فهرستی را که در نزدیکی بالا و پایین صفحه ظاهر میشوند دشوارتر میکند. به همین دلیل، Compose for Wear OS شامل نسخهای از کلاس LazyColumn به نام TransformingLazyColumn است که از مقیاسبندی و شکلگیری انیمیشنها پشتیبانی میکند. وقتی اقلام به سمت لبه ها حرکت می کنند، کوچکتر می شوند و محو می شوند.
به منظور افزودن یک افکت مقیاسبندی و پیمایش، از Modifier.transformedHeight استفاده کنید تا به Compose امکان محاسبه تغییر ارتفاع را در حین حرکت آیتم در صفحه و transformation = SurfaceTransformation(transformationSpec) برای اعمال جلوههای بصری، از جمله کوچک کردن بصری مورد برای مطابقت با قبلی، محاسبه کند. از یک TransformationSpec سفارشی برای مؤلفههایی که transformation به عنوان پارامتر در نظر نمیگیرند، برای مثال Text استفاده کنید.
انیمیشن زیر نشان می دهد که چگونه اندازه و شفافیت یک عنصر با حرکت در صفحه نمایش تغییر می کند:
قطعه کد زیر نحوه ایجاد یک لیست با استفاده از طرح بندی TransformingLazyColumn برای ایجاد محتوایی که در اندازه های مختلف صفحه نمایش Wear OS عالی به نظر می رسد را نشان می دهد، به عنوان مثال در کد نمونه زیر، padding لازم را به اولین و آخرین عناصر لیست که در contentPadding of the TransformingLazyColumn تنظیم شده اند اضافه می کند. برای اینکه نشانگر اسکرول نشان داده شود، columnState بین ScreenScaffold و 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,)}}}}
اگر نیاز به اضافه کردن یک رفتار snap-and-fling دارید، پیشنهاد می کنیم از ScalingLazyColumn استفاده کنید. این افکت به کاربران کمک می کند تا با دقت بیشتری در میان موارد موجود در یک لیست حرکت کنند و در عین حال به آنها کمک می کند تا در یک لیست طولانی با سرعت بیشتری حرکت کنند.
برای افزودن این افکت به نسخه Horologist از ScalingLazyColumn ، پارامتر rotaryModecolumnState روی RotaryWithSnap قرار دهید، همانطور که در قطعه کد زیر نشان داده شده است:
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-08-23 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-23 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Lists with Compose for Wear OS\n\nCompose 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/dd30aee903e8c247786c064faab1a9ca8d10b46e/wear/src/main/java/com/example/wear/snippets/m3/list/List.kt#L53-L96\n```\n\nAdd a snap-and-fling effect\n---------------------------\n\nIf 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/dd30aee903e8c247786c064faab1a9ca8d10b46e/wear/src/main/java/com/example/wear/snippets/list/List.kt#L72-L103\n```\n\nRecommended for you\n-------------------\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)"]]