Метод expand
Метод expand класса
SheetState
переводит
ModalBottomSheet
в полностью раскрытое положение.
Это suspend-функция. Её вызывают
из rememberCoroutineScope
или LaunchedEffect.
Синтаксис
sheetState.expand()
Пример
Давайте раскроем лист сразу после появления:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val sheetState = rememberModalBottomSheetState()
var open by remember { mutableStateOf(true) }
if (open) {
ModalBottomSheet(
onDismissRequest = { open = false },
sheetState = sheetState,
) {
LaunchedEffect(Unit) {
sheetState.expand()
}
Text(text = "abcde")
}
}
}
}
}
На экране лист займёт почти всю высоту, а не только нижнюю половину.
Пример
Давайте раскроем лист по второй кнопке:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val sheetState = rememberModalBottomSheetState()
val scope = rememberCoroutineScope()
var open by remember { mutableStateOf(true) }
if (open) {
ModalBottomSheet(
onDismissRequest = { open = false },
sheetState = sheetState,
) {
Button(onClick = {
scope.launch { sheetState.expand() }
}) {
Text(text = "12345")
}
}
}
}
}
}
На экране после нажатия лист поднимется до максимальной высоты.
Смотрите также
-
метод
partialExpand,
который оставляет лист частично открытым -
класс
SheetState,
у которого объявлен метод expand -
метод
show,
который показывает скрытый лист -
функция
ModalBottomSheet,
чья высота меняется через sheetState