На HomeScreen у меня есть LazyVerticalGrid из 100 элементов, а DetailsScreen — это просто кнопка «Назад».
При прокрутке главного экрана, входе в экран сведений и возврате назад фокус на нажатой карточке не восстанавливается.
Вот полный код моего примера приложения:
Код: Выделить всё
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = "Home"
) {
composable("Home") {
val list = rememberSaveable { List(100) { "Card $it" } }
LazyVerticalGrid(
modifier = Modifier
.fillMaxSize(),
columns = GridCells.Adaptive(minSize = 70.dp),
contentPadding = PaddingValues(horizontal = 40.dp),
horizontalArrangement = Arrangement.spacedBy(20.dp),
verticalArrangement = Arrangement.spacedBy(20.dp)
) {
itemsIndexed(
items = list,
key = { index, _ -> index }
) { _, item ->
var isFocused by remember { mutableStateOf(false) }
Box(
modifier = Modifier
.onFocusChanged { isFocused = it.hasFocus }
.size(height = 70.dp, width = 70.dp)
.background(Color.Red)
.border(width = 2.dp, color = if (isFocused) Color.White else Color.Transparent)
.clickable { navController.navigate("Details") }
.focusable(),
contentAlignment = Alignment.Center
) {
Text(text = item)
}
}
}
}
composable("Details") {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Button(
onClick = { navController.popBackStack() }
) {
Text(text = "Go back")
}
}
}
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... navigation