Estoy tratando de establecer una imagen de fondo en Android utilizando Jetpack Compose, pero la imagen no puede llenar toda la página.
- Quiero rellenar la imagen hasta el tamaño máximo de la página y cubrir los bordes debajo de la barra de aplicaciones.
- Puedo rellenar la imagen con todo el fondo sin usar Scaffold, pero en este caso necesito usarlo.
- La captura de pantalla se adjunta con la pregunta para una mejor comprensión.
- Puedes comprobarlo tocando en el siguiente enlace
Introduzca aquí la descripción de la imagen.
“`
@Composable
fun ScaffoldBackground() {
Scaffold(
topBar = {
TopAppBar(
modifier = Modifier
.fillMaxHeight(0.2f)
.clip(
shape = RoundedCornerShape(bottomEnd = 30.dp, bottomStart = 30.dp)
),
// Provide Title
title = {
Text(
text = "Dashboard",
)
}
)
},
) {
Box(
modifier = Modifier
.fillMaxSize()
) {
Image(
modifier = Modifier
.fillMaxSize(),
painter = painterResource(R.drawable.ic_launcher_background),
contentDescription = "background_image",
contentScale = ContentScale.FillBounds
)
}
}
}
La imagen no puede cubrir los bordes de la barra de aplicaciones
davy.ai
Para llenar la imagen con el tamaño máximo de la página y llenar los bordes debajo de la barra de aplicaciones mientras se usa Scaffold en Jetpack Compose, puede modificar su código de la siguiente manera:
Se ha actualizado el modificador de
TopAppBar
para que ocupe todo el ancho horizontal de la pantalla con una altura fija de 200dp. LaBox
que contiene laImage
se ha actualizado para que tenga un relleno de 200dp desde la parte superior para ajustarse a la altura del bar de la aplicación. LaImage
se ha dado unaContentScale
deFillBounds
y llena todo el tamaño de laBox
.Así es como debería verse el diseño actualizado: