Skip to content

Commit 2e0b186

Browse files
feat(wear): add EnhancedComposeList sample (#888)
Demonstrate reverseLayout and snapping features in TransformingLazyColumn.
1 parent 6ecfaf2 commit 2e0b186

1 file changed

Lines changed: 47 additions & 1 deletion

File tree

  • wear/src/main/java/com/example/wear/snippets/m3/list

wear/src/main/java/com/example/wear/snippets/m3/list/List.kt

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import androidx.wear.compose.material3.lazy.rememberTransformationSpec
3939
import androidx.wear.compose.material3.lazy.transformedHeight
4040
import androidx.wear.compose.ui.tooling.preview.WearPreviewDevices
4141
import androidx.wear.compose.ui.tooling.preview.WearPreviewFontScales
42+
import androidx.wear.compose.foundation.rotary.RotaryScrollableDefaults
4243

4344

4445
@Composable
@@ -100,7 +101,8 @@ fun SnapAndFlingComposeList() {
100101
ScreenScaffold(scrollState = columnState) {
101102
TransformingLazyColumn(
102103
state = columnState,
103-
flingBehavior = TransformingLazyColumnDefaults.snapFlingBehavior(columnState)
104+
flingBehavior = TransformingLazyColumnDefaults.snapFlingBehavior(columnState),
105+
rotaryScrollableBehavior = RotaryScrollableDefaults.snapBehavior(columnState)
104106
) {
105107
// ...
106108
// [START_EXCLUDE]
@@ -130,6 +132,50 @@ fun SnapAndFlingComposeList() {
130132
// [END android_wear_snap]
131133
}
132134

135+
@Composable
136+
fun EnhancedComposeList() {
137+
// [START android_wear_tlc_reverse]
138+
val columnState = rememberTransformingLazyColumnState()
139+
val transformationSpec = rememberTransformationSpec()
140+
ScreenScaffold(scrollState = columnState) { contentPadding ->
141+
TransformingLazyColumn(
142+
state = columnState,
143+
contentPadding = contentPadding,
144+
reverseLayout = true,
145+
modifier = Modifier.fillMaxWidth()
146+
) {
147+
items(10) { index ->
148+
Button(
149+
label = {
150+
Text(
151+
text = "Item ${index + 1}"
152+
)
153+
},
154+
onClick = {},
155+
modifier = Modifier
156+
.fillMaxWidth()
157+
.transformedHeight(this, transformationSpec)
158+
.minimumVerticalContentPadding(ButtonDefaults.minimumVerticalListContentPadding),
159+
transformation = SurfaceTransformation(transformationSpec)
160+
)
161+
}
162+
item {
163+
// With reverseLayout = true, the last item declared appears at the top.
164+
ListHeader(
165+
modifier = Modifier
166+
.fillMaxWidth()
167+
.transformedHeight(this, transformationSpec)
168+
.minimumVerticalContentPadding(ListHeaderDefaults.minimumTopListContentPadding),
169+
transformation = SurfaceTransformation(transformationSpec)
170+
) {
171+
Text("Header")
172+
}
173+
}
174+
}
175+
}
176+
// [END android_wear_tlc_reverse]
177+
}
178+
133179
// [START android_wear_list_breakpoint]
134180
const val LARGE_DISPLAY_BREAKPOINT = 225
135181

0 commit comments

Comments
 (0)