Код: Выделить всё
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun FilterScreen(
component: SearchComponent,
onDismiss: () -> Unit
) {
val sheetState = rememberModalBottomSheetState(
skipPartiallyExpanded = true
)
val countriesIS = remember { MutableInteractionSource() }
val filterState by component.filterState.collectAsState()
var showBottomSheet by remember { mutableStateOf(false) }
ModalBottomSheet(
onDismissRequest = {
showBottomSheet = false
onDismiss()
},
sheetState = sheetState,
shape = RoundedCornerShape(topEnd = 50.dp, topStart = 50.dp),
containerColor = Color.White
) {
Column(
modifier = Modifier
.fillMaxHeight()
.imePadding()
.verticalScroll(rememberScrollState()),
) {
AutocompleteTextEdit(
labelText = Strings.getString("citizenship"),
interactionSource = countriesIS,
text = filterState.countriesString,
items = component.countries,
onValueChange = { newText -> component.onEvent(SearchEvents.UpdateCountries(newText)) },
)
Spacer(Modifier.requiredHeight(12.dp))
Row {
DefaultButton(
modifier = Modifier
.weight(1f)
.requiredHeight(mainButtonHeight)
.padding(start = mainSideMargin, end = halfMainSideMargin),
text = Strings.getString("clear"),
isFilled = false,
) {
component.onEvent(SearchEvents.ClearFilter)
}
DefaultButton(
modifier = Modifier
.weight(1f)
.requiredHeight(mainButtonHeight)
.padding(start = 8.dp, end = mainSideMargin),
text = Strings.getString("search"),
) {
component.onEvent(SearchEvents.ApplyFilter)
}
}
Spacer(Modifier
.requiredHeight(250.dp)
)
}
}
}
У меня проблема с определением отступов времени в Compose на платформах с SDK29 или более ранней версией в ModalBottomSheet.
У меня много таких полей автозаполнения, поэтому диалоговое окно нижнего листа занимает полноэкранный режим.
В SDK выше 29 проблем нет. Когда появляется клавиатура, мое диалоговое окно можно прокручивать, поэтому я могу видеть его полностью.
Но на платформах ниже 29 клавиатура закрывает нижнюю часть листа.
Тем не менее, на 29 — перекомпоновки не происходит.Я добавил корректировкуResize в действие в манифесте. И это помогает на обычных экранах, но не в ModalBottomSheet.
Кроме того, я сделал несколько точек останова в коде, а на платформах 30+ рекомпозиция происходит при отображении/скрытии клавиатуры.
Подробнее здесь: https://stackoverflow.com/questions/786 ... -and-lower