es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy tratando de establecer una imagen de fondo en Android utilizando Jetpack Compose, pero la imagen no puede llenar toda la página.

  1. Quiero rellenar la imagen hasta el tamaño máximo de la página y cubrir los bordes debajo de la barra de aplicaciones.
  2. Puedo rellenar la imagen con todo el fondo sin usar Scaffold, pero en este caso necesito usarlo.
  3. La captura de pantalla se adjunta con la pregunta para una mejor comprensión.
  4. 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

Tags:  , , , ,

Answer

  1. Avatar for 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:

    @Composable
    fun FondoDelScaffold() {
        Scaffold(
            topBar = {
                TopAppBar(
                    modifier = Modifier
                        .fillMaxWidth()
                        .height(200.dp)
                ) {
                    Text(
                        text = "Dashboard",
                        modifier = Modifier
                            .align(Alignment.Center)
                    )
                }
            }
        ) {
            Box(
                modifier = Modifier
                    .fillMaxSize()
                    .padding(top = 200.dp)
            ) {
                Image(
                    painter = painterResource(R.drawable.your_image),
                    contentDescription = "Your Image",
                    contentScale = ContentScale.FillBounds,
                    modifier = Modifier.fillMaxSize()
                )
            }
        }
    }
    

    Se ha actualizado el modificador de TopAppBar para que ocupe todo el ancho horizontal de la pantalla con una altura fija de 200dp. La Box que contiene la Image 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. La Image se ha dado una ContentScale de FillBounds y llena todo el tamaño de la Box.

    Así es como debería verse el diseño actualizado:

    Updated ScaffoldBackground layout

Comments are closed.