Почему прокручиваемый модификатор не прокручивает содержимое просмотра?

Я пытаюсь заставить прокрутку работать над 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, который уже имеет встроенную прокрутку, а также ленивую загрузку ячеек.

Другие вопросы по тегам