Kotlin – Как прокручивать прокручиваемый столбец внутри Jetpack Compose ModalBottomSheet?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Kotlin – Как прокручивать прокручиваемый столбец внутри Jetpack Compose ModalBottomSheet?

Сообщение Anonymous »

Я использую Kotlin v1.7.20 и реализацию androidx.compose.material3 v1.3.0-beta04.
Мне нужно поместить содержимое в нижний лист. Это содержимое очень длинное, а его высота превышает высоту устройства, которое я использую для запуска приложения.
Когда я имею дело с составными элементами листа, не расположенными внизу, я могу легко добиться прокрутки вертикально переполненного содержимого, обернув составной элемент Column вокруг длинного содержимого, а затем применив следующий аргумент к элементу Column:

Код: Выделить всё

Column( modifier = Modifier.verticalScroll(state = rememberScrollState()) ) {}
Однако этот метод не работал с ModalBottomSheet. После расширения нижнего листа до полной высоты (устройства) пролистывание ModalBottomSheet вверх не привело к прокрутке вниз длинного содержимого, заключенного в составной элемент Column. (На самом деле, при полном раскрытии ModalBottomSheet не реагировал ни на один жест смахивания вверх.)
Ниже приведен код, который я использовал:

Код: Выделить всё

// Controls, from an outside composable, whether the modal bottom sheet should be displayed
var showBottomSheet = mutableStateOf(false)

@Composable
@ExperimentalMaterial3Api
@OptIn(ExperimentalMaterial3Api::class)
fun getBottomSheet() {
val scrollState = rememberScrollState()
val sheetState = rememberModalBottomSheetState()
if (showBottomSheet.value) {
ModalBottomSheet(
onDismissRequest = { showBottomSheet.value = false },
sheetState = sheetState,
modifier = Modifier.fillMaxHeight()
) {
Column (
modifier = Modifier.fillMaxHeight().verticalScroll(scrollState)
) {
// Example: generating a vertically very long content
var i: Int
for (i in 1..50) {
Text("Hello", fontSize = 96.sp)
Text("World!", fontSize = 96.sp)
}
}
}
}
}
В соответствии с этим сообщением я попытался обернуть прокручиваемый элемент Column вокруг ModalBottomSheet (вместо элемента Column, находящегося внутри нижнего листа). Нижний лист все еще не мог прокрутиться до остальной части длинного контента ниже. Затем в другом сообщении предлагается использовать BottomSheetScaffold вместо ModalBottomSheet, который предлагает более продвинутые функции. Однако BottomSheetScaffold перепутал существующий элемент Scaffold, который я уже настроил в основном компоненте приложения, поэтому я решил не использовать его.
Как добиться вертикальной прокрутки длинного контента в полностью развернутом ModalBottomSheet?

Подробнее здесь: https://stackoverflow.com/questions/787 ... dalbottoms
Ответить

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

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

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

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

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