Помните положение прокрутки при навигации по экранам приложенияAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Помните положение прокрутки при навигации по экранам приложения

Сообщение Anonymous »

Я стараюсь, чтобы приложение Android вспомнила, в какой позиции экрана пользователь оставил его, чтобы они могли продолжать, когда они движутся взад -вперед в приложении. Я подумал, используя Remememberable , это сработало бы, как я ожидал, но это не ...
Здесь я показываю простой и воспроизводимый пример того, что я попробовал:
object WelcomeDestination : NavigationDestination() {
override val route = "welcome"
override val title = "welcome"
}

object ContentDestination : NavigationDestination() {
override val route = "content"
override val title = "content"
}

@Composable
fun WelcomeScreen(onNavigationButtonClick: (NavigationDestination) -> Unit, modifier: Modifier) {
Column(modifier = modifier) {
Button(
onClick = { onNavigationButtonClick(ContentDestination) },
) {
Text("Go to Content")
}

}
}

@Composable
fun ContentScreen(modifier: Modifier) {

val scrollState = rememberSaveable(saver = ScrollState.Saver) {
ScrollState(initial = 0) // Initialize a new ScrollState
}

Box(modifier = modifier.verticalScroll(scrollState)) {
Text(LONG_TEXT)
}

}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MainScreen(
navController: NavHostController = rememberNavController(),
) {

Scaffold(

) { innerPadding ->
NavHost(
navController = navController,
startDestination = WelcomeDestination.route,
) {
composable(route = WelcomeDestination.route) {
WelcomeScreen(
onNavigationButtonClick = { navigationDestination: NavigationDestination ->
navController.navigate(navigationDestination.route)
},
modifier = Modifier
.padding(innerPadding)
.fillMaxSize()
.wrapContentSize(Alignment.Center)
)
}
composable(route = ContentDestination.route) {
ContentScreen(
modifier = Modifier
.padding(innerPadding)
.fillMaxSize()
.wrapContentSize(Alignment.Center)
)
}
}

}
}
< /code>
Попробуйте войти в содержимое, прокрутите, прокрутите вниз и вернитесь в WelcomeScreen и снова введите в Satentscreen. Я ожидаю, что вернусь на экран, но он возвращается вверх.


Подробнее здесь: https://stackoverflow.com/questions/796 ... of-the-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»