[*] модификатор.windowinsetspadding(windowinsets.navigationbars)
windowinsets.navigationbars.aspaddingvalues().calculagulateboltpadingpardings /> DialogProperties (DestfitsSystemWindows = false) < /li>
< /ul>
… Но все они возвращают 0,0 нижнего вставки в диалог, однако они не возвращаются в ноль и хорошо работают на других композитных. Диалог). < /P>
Я добавляю фиксированное .padding (внизу = 100.dp) в этот же столб, и лист перемещался правильно, поэтому проблема заключается в вставках.
Код: Выделить всё
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Dialog
import androidx.compose.material3.DialogProperties
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.unit.dp
@Composable
fun ActionSheetDialog(
actionSheet: StateFlow,
displayDelay: Duration = 100.milliseconds
) {
Dialog(
onDismissRequest = { /* dismiss */ },
properties = DialogProperties(
usePlatformDefaultWidth = false,
decorFitsSystemWindows = false // I also tried true
)
) {
Box(
Modifier
.fillMaxSize()
.clickable(
indication = null,
interactionSource = remember { MutableInteractionSource() }
) { /* dismiss */ }
) {
Column(
Modifier
.align(Alignment.BottomCenter)
// none of these work, all give 0 inset:
.navigationBarsPadding()
//.windowInsetsPadding(WindowInsets.navigationBars)
//.padding(WindowInsets.navigationBars.asPaddingValues())
//.padding(bottom = 100.dp) //
Это используется так: < /p>
@Composable
fun MyOutherComposable(
positionState: PositionState,
viewModel: SomeViewModel,
bottomSheetSize: Float
) {
MyTheme {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier
.background(GalileoTheme.colors.background00)
.fillMaxWidth()
) {
// screen content
}
}
ActionSheetDialog(actionSheet = viewModel.actionSheet)
}
< /code>
У меня есть одно приложение для активности, поэтому я не думаю, что сама деятельность вызывает это. Кроме того, мое приложение использует ту же тему. class = "Lang-Kotlin PrettyPrint-Override">// Fragment.onViewCreated(...)
binding.mapViewCompose.consumeWindowInsets = false
binding.mapViewCompose.setContent {
MapsScreenView(/* ... */) // THIS IS MY MAIN COMPOSABLE
}
< /code>
Редактировать 2: < /h2>
Я добавил это в мой «корневой композиционный» (myouthercomposable), который называется фрагментом, но все значения (переменные паддинга и переменные DP) устанавливаются как 0 значения: < /p>
@Composable
fun MapsScreenView(
// some params
) {
val density = LocalDensity.current
// Compose APIs
val padding1 = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding()
val padding2 = WindowInsets.systemBars.asPaddingValues().calculateBottomPadding()
val padding3 = WindowInsets.safeDrawing.asPaddingValues().calculateBottomPadding()
val padding4 = WindowInsets.ime.asPaddingValues().calculateBottomPadding()
// Direct dp values (instead of PaddingValues)
val dp1 = with(density) { WindowInsets.navigationBars.getBottom(density).toDp() }
val dp2 = with(density) { WindowInsets.systemBars.getBottom(density).toDp() }
val dp3 = with(density) { WindowInsets.safeDrawing.getBottom(density).toDp() }
val dp4 = with(density) { WindowInsets.ime.getBottom(density).toDp() }
Подробнее здесь: https://stackoverflow.com/questions/797 ... ion-insets
Мобильная версия