Open1
[メモ]指定ID位置までauto scrollするコードメモ
@Composable
fun AutoScrollingColumn(targetId: Int?) {
val scrollState = rememberScrollState()
val positions = remember { mutableStateMapOf<Int, Int>() } // IDと位置情報をマッピング
LaunchedEffect(targetId, positions) {
if (targetId != null) {
positions[targetId]?.let {
scrollState.animateScrollTo(it)
}
}
}
Column(modifier = Modifier.verticalScroll(scrollState)) {
listOf(1, 2, 3).forEach { id ->
CustomItem(id = id, targetId = targetId) { updatedId, position ->
positions[updatedId] = position
}
}
// 他のコンテンツを追加
}
}
@Composable
fun CustomItem(id: Int, targetId: Int?, onPositioned: (Int, Int) -> Unit) {
Box(
modifier = Modifier
.padding(16.dp)
.background(Color.Gray)
.fillMaxWidth()
.onGloballyPositioned { layoutCoordinates ->
// このコンポーザブルのスクリーン上のy座標を取得
val position = layoutCoordinates.positionInParent().y
onPositioned(id, position.toInt())
}
) {
Text("Item $id")
}
}