JetPack Compose: Показать контент в полном экране.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 JetPack Compose: Показать контент в полном экране.

Сообщение Anonymous »

Я пытаюсь создать полноэкранную всплывающую композицию, которая показывает заданный контент, полностью полноэкранной, а также скрывая системные стержни. Как изображение или просмотрщик документов. Но я получаю какое -то странное поведение на Android 14 и ниже. Всплывающее окно кажется немного коротким, чтобы покрыть весь экран, и я не знаю, что вызывает его. Вероятно, это какое-то отношение к оконным вставкам, но я не могу понять.

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

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun FullScreenPopup(
onDismissRequest: () -> Unit,
content: @Composable () -> Unit,
) {
val context = LocalContext.current

Popup(
onDismissRequest = onDismissRequest,
properties = PopupProperties(
usePlatformDefaultWidth = false,
clippingEnabled = false,
),
popupPositionProvider = object : PopupPositionProvider {
override fun calculatePosition(
anchorBounds: IntRect,
windowSize: IntSize,
layoutDirection: LayoutDirection,
popupContentSize: IntSize
): IntOffset {
return IntOffset.Zero
}
},
) {
Surface(
modifier = Modifier.fillMaxSize(),
content = content,
)
}

DisposableEffect(Unit) {
val window = context.findActivity()?.window ?: return@DisposableEffect onDispose {}
val insetsController = WindowCompat.getInsetsController(window, window.decorView)

insetsController.apply {
hide(WindowInsetsCompat.Type.statusBars())
hide(WindowInsetsCompat.Type.navigationBars())
systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}

onDispose {
insetsController.apply {
show(WindowInsetsCompat.Type.statusBars())
show(WindowInsetsCompat.Type.navigationBars())
systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_DEFAULT
}
}
}
}
< /code>
И вот как я хочу использовать его < /p>
FullScreenPopupTestTheme {
var showFullScreenPopup by remember { mutableStateOf(false) }

Scaffold(
modifier = Modifier.fillMaxSize(),
contentWindowInsets = ScaffoldDefaults.contentWindowInsets,
) { innerPadding ->
Box(
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
.background(Color.Cyan),
) {
Box(
modifier = Modifier
.size(100.dp)
.align(Alignment.Center)
.background(Color.Yellow)
.clickable { showFullScreenPopup = true },
contentAlignment = Alignment.Center,
) {
Text("Click here")
}
}
}

if (showFullScreenPopup) {
FullScreenPopup(
onDismissRequest = { showFullScreenPopup = false },
) {
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Blue)
.clickable { showFullScreenPopup = false },
)
}
}
}
Вот как он выглядит на Android 15
Вот как это выглядит на Android 14
У кого -нибудь есть идея, как получить его, чтобы охватить весь экран, как на Android 15?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... reen-popup
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • JetPack Compose: Показать контент в полном экране.
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как вызвать вторую функцию в действии в полном экране
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Video Player Kivy не отображается на полном экране
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Video Player Kivy не отображается на полном экране
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Реактивно-видео, как сделать паузу видео, когда видео не на полном экране или с экрана
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

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