Почему прокручиваемый модификатор не прокручивает содержимое просмотра?
Я пытаюсь заставить прокрутку работать над
Column
где количество записей может превышать высоту окна.
В настоящее время я использую Compose 1.1.0-rc03, и на данный момент я только пытаюсь заставить его работать на рабочем столе.
Я свел проблему к этому:
@Composable
fun App() {
val optionsScrollState = rememberScrollState()
Row(modifier = Modifier.fillMaxSize()) {
// Left column
Column(
modifier = Modifier
.scrollable(optionsScrollState, Orientation.Vertical)
.width(240.dp)
.fillMaxHeight()
) {
(1..100).forEach { i -> Text("Row $i") }
}
}
}
Но это не прокручивается или, по крайней мере, не с помощью колесика мыши. Может быть, есть другой способ прокрутки, который я не сразу понял.
Как мне заставить это работать?
Документы на
scrollable
сказать, что мне, возможно, придется самому управлять государством. Так использует
rememberScrollState()
недостаточно?
Я нашел несколько существующих вопросов об отключении прокрутки столбцов, но они всегда говорили о
LazyColumn
который я здесь не использую.
1 ответ
Вы используете неправильный модификатор. Из документации :
The
scrollable
Модификатор отличается от модификаторов прокрутки тем, что свойство scrollable обнаруживает жесты прокрутки, но не смещает его содержимое.
Если вам интересно, как
Modifier.scrollable
следует использовать, вы можете найти пример в той же главе документации.
Вы можете использовать
Modifier.verticalScroll
вместо этого, что даст вам ожидаемое поведение.
Также подумайте о переходе на
LazyColumn
, который уже имеет встроенную прокрутку, а также ленивую загрузку ячеек.