Я перемещаю свое приложение в Android SDK 35 и столкнулся с классической проблемой элементов, отображаемых под строкой состояния и навигационной панели. Я начал использовать Insets для добавления накладки, и она работает для многих экранов. Однако с помощью пользовательского нижнего листа, созданного с использованием Androidx.compose.ui.window.dialog, я не могу заставить его работать. />[*]modifier.navigationbarspadding()
[*] модификатор.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() }
localdensity.current, однако, имеет определенные значения, которые не являются 0.
Редактировать 3:
Я также сейчас пробовал SafeContentPadding , но все же не работал:
, но все еще не работал:
, но все же не работал:
не работал:
не работал:
Подробнее здесь: https://stackoverflow.com/questions/797 ... ion-insets
Композитный диалог нижний лист не будет навигационной навигационной панели после миграции SDK 35 (вставки = 0) ⇐ Android
Форум для тех, кто программирует под Android
1759512984
Anonymous
Я перемещаю свое приложение в Android SDK 35 и столкнулся с классической проблемой элементов, отображаемых под строкой состояния и навигационной панели. Я начал использовать Insets для добавления накладки, и она работает для многих экранов. Однако с помощью пользовательского нижнего листа, созданного с использованием Androidx.compose.ui.window.dialog, я не могу заставить его работать. />[*]modifier.navigationbarspadding()
[*] модификатор.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() }
localdensity.current, однако, имеет определенные значения, которые не являются 0.
Редактировать 3:
Я также сейчас пробовал SafeContentPadding , но все же не работал:
, но все еще не работал:
, но все же не работал:
не работал:
не работал:
Подробнее здесь: [url]https://stackoverflow.com/questions/79780897/compose-dialog-bottom-sheet-bellow-navigation-bar-after-sdk-35-migration-insets[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия