Cómo crear un botón de borde redondeado usando Jetpack Compose

2 minutos de lectura

Avatar de usuario de Sanjayrajsinh
Sanjayrajsinh

Necesito agregar un borde con una esquina redondeada en el botón usando Jetpack Compose

Como :

ingrese la descripción de la imagen aquí

Avatar de usuario de Gabriele Mariotti
gabriele mariotti

Para lograr un botón con un borde con esquinas redondeadas puedes usar el OutlinedButton componente que se aplica en el shape parámetro un RoundedCornerShape:

OutlinedButton(
    onClick = { },
    border = BorderStroke(1.dp, Color.Red),
    shape = RoundedCornerShape(50), // = 50% percent
                                    // or shape = CircleShape
    colors = ButtonDefaults.outlinedButtonColors(contentColor = Color.Red)
){
    Text( text = "Save" )
}

ingrese la descripción de la imagen aquí

  • Gracias señor, pero quiero una interfaz de usuario personalizada con borde redondeado

    – Sanjayrajsinh

    15 de noviembre de 2019 a las 11:13

  • @Sanjayrajsinh el OutlinedButtonStyle tiene esquinas redondeadas por defecto. En cualquier caso, puede anular el valor usando shape = RoundedCornerShape(x.dp)

    – Gabriele Mariotti

    15 de noviembre de 2019 a las 11:15


  • @Sanjayrajsinh o usando un valor porcentual con shape = RoundedCornerShape(50). Acabo de actualizar la respuesta.

    – Gabriele Mariotti

    15 de noviembre de 2019 a las 11:18

  • @GabrieleMariotti No veo ninguna diferencia entre Button() y OutlinedButton(). Si uso el mismo código con Button(), dará el mismo resultado. ¿Puedo saber cuál es la diferencia?

    – Ranjithkumar

    16 de agosto de 2021 a las 11:16

  • @RanjithKumar El OutlinedButton es un Button con un outlinedBorder y colores personalizados como backgroundColor= MaterialTheme.colors.surface y contentColor = MaterialTheme.colors.primary

    – Gabriele Mariotti

    16 de agosto de 2021 a las 11:54

Solo usa el modificador como:

modifier = Modifier.border( width = 2.dp,
                            color = Color.Red,
                            shape = RoundedCornerShape(5.dp))

utilizar Acortar Modificador, además también puedes elegir una esquina específica para curvar

 modifier = Modifier.clip(RoundedCornerShape(15.dp, 15.dp, 0.dp, 0.dp))

Avatar de usuario de Richard Onslow Roper
Richard Onslow Cordelero

Utilizar el clip modificador

Modifier.clip(CircleShape)

Este es el botón que tienes en esa imagen:

Button(
       onClick = {},
       shape = RoundedCornerShape(23.dp),
       border = BorderStroke(3.dp, Color.Red),
       colors = ButtonDefaults.buttonColors(contentColor = Color.Red, backgroundColor = Color.White)
       ) {
            Text(
                text = "Save",
                fontSize = 17.sp,
                modifier = Modifier.padding(horizontal = 30.dp, vertical = 6.dp)
            )
        }

  • forma = RoundedCornerShape(23.dp) ¡haz el truco en el material 3!

    – Daniele Ceglia

    20 de septiembre de 2022 a las 8:35

avatar de usuario de deas maha putra
deas maha putra

Prueba esto

               Box(
                    modifier = Modifier
                        .fillMaxWidth()
                        .height(40.dp)
                        .padding(4.dp)
                        .clip(RoundedCornerShape(8.dp))
                        .background(Color.White)
                        .border(
                            1.dp,
                            Color.RED,
                            shape = RoundedCornerShape(8.dp),
                        )

                ) {
                    Text(
                        modifier = Modifier.align(Alignment.Center),
                        text = "Save",
                        color = Color.RED,
                        style = MaterialTheme.typography.h6
                    )
                }

  • forma = RoundedCornerShape(23.dp) ¡haz el truco en el material 3!

    – Daniele Ceglia

    20 de septiembre de 2022 a las 8:35

¿Ha sido útil esta solución?