En Jetpack Compose, el objeto `Modifier` proporciona una variedad de propiedades que puedes utilizar para aplicar modificadores a tus componentes de interfaz de usuario y controlar su diseño y comportamiento. A continuación, se muestran algunas de las propiedades más comunes que puedes utilizar con `Modifier`:

1. Tamaño y Diseño:
   - `size(width: Dp, height: Dp)`: Establece el ancho y el alto del componente.
   - `fillMaxWidth()`: Hace que el componente ocupe todo el ancho disponible.
   - `fillMaxHeight()`: Hace que el componente ocupe todo el alto disponible.
   - `requiredWidth(width: Dp)`: Requiere que el componente tenga un ancho específico.
   - `requiredHeight(height: Dp)`: Requiere que el componente tenga una altura específica.
   - `offset(x: Dp, y: Dp)`: Desplaza el componente en el eje X e Y.

2. Margen y Espaciado:
   - `padding(all: Dp)`: Agrega márgenes iguales en todos los lados.
   - `padding(horizontal: Dp, vertical: Dp)`: Agrega márgenes horizontales y verticales.
   - `padding(start: Dp, top: Dp, end: Dp, bottom: Dp)`: Agrega márgenes en lados específicos.

3. Alineación:
   - `align(alignment: Alignment)`: Alinea el componente dentro de su contenedor.
   - `alignBy(alignmentLine: AlignmentLine)`: Alinea el componente por una línea específica (por ejemplo, la línea base de un texto).

4. Fondo y Color:
   - `background(color: Color)`: Establece un color de fondo para el componente.
   - `border(border: BorderStroke)`: Agrega un borde al componente.

5. Interacción:
   - `clickable(onClick: () -> Unit)`: Hace que el componente sea interactivo y responde a clics.
   - `pointerInput` y `pointerInteropFilter`: Permite gestionar eventos de entrada personalizados.

6. Comportamiento Scroll:
   - `scrollable`: Hace que el componente sea desplazable.

7. Flujo de Contenido:
   - `fillMaxSize()`: Hace que el componente ocupe todo el espacio disponible en su contenedor.
   - `weight(weight: Float)`: Distribuye el espacio disponible en un `Row` o `Column` según el peso relativo.

8. Transformación y Rotación:
   - `scale(scaleX: Float, scaleY: Float)`: Escala el componente en el eje X e Y.
   - `rotate(degrees: Float)`: Rota el componente por un ángulo específico.

9. Clips y Recortes:
   - `clip(shape: Shape)`: Aplica un clip a la forma del componente.
   - `clipToBounds()`: Recorta el contenido que se desborda del componente.

10. Interacción táctil:
    - `swipeable()`: Hace que el componente sea deslizable.

Estas son solo algunas de las propiedades más comunes que puedes utilizar con `Modifier` en Jetpack Compose. Puedes combinar y anidar modificadores para lograr el diseño y el comportamiento específicos que necesites para tus componentes de interfaz de usuario. El uso de estos modificadores te permite crear interfaces de usuario flexibles y personalizadas en Compose.

------ Aquí te proporcionaré ejemplos de código para algunas de las propiedades comunes que se pueden aplicar utilizando el modificador Modifier en Jetpack Compose: Tamaño y Diseño: size(width: Dp, height: Dp):
    
        
Box(
    modifier = Modifier
        .size(100.dp, 100.dp)
        .background(Color.Blue)
) {
    // Contenido del componente
}
        
    
Margen y Espaciado: padding(all: Dp):

Box(
    modifier = Modifier
        .padding(16.dp)
        .background(Color.Green)
) {
    // Contenido del componente con margen en todos los lados
}
     
Alineación: align(alignment: Alignment):

Box(
    modifier = Modifier
        .size(100.dp, 100.dp)
        .background(Color.Red)
        .align(Alignment.Center)
) {
    // Contenido del componente alineado en el centro
}

Fondo y Color: background(color: Color):

Box(
    modifier = Modifier
        .fillMaxSize()
        .background(Color.Yellow)
) {
    // Contenido del componente con color de fondo
}

Interacción: clickable(onClick: () -> Unit):

var text by remember { mutableStateOf("Haz clic en mí") }

Box(
    modifier = Modifier
        .size(100.dp, 100.dp)
        .background(Color.Magenta)
        .clickable {
            text = "¡Haz hecho clic!"
        }
) {
    Text(text)
}

Flujo de Contenido: fillMaxSize():

Column(
    modifier = Modifier
        .fillMaxSize()
        .background(Color.Cyan)
) {
    Text("Elemento 1")
    Text("Elemento 2", modifier = Modifier.fillMaxWidth())
    Text("Elemento 3")
}

Clips y Recortes: clip(shape: Shape):

Box(
    modifier = Modifier
        .size(100.dp, 100.dp)
        .clip(RoundedCornerShape(16.dp))
        .background(Color.Orange)
) {
    // Contenido del componente con esquinas redondeadas
}

Interacción táctil: swipeable():

val swipeState = rememberSwipeableState(initialValue = 0)
Box(
    modifier = Modifier
        .size(100.dp, 100.dp)
        .background(Color.Purple)
        .swipeable(
            state = swipeState,
            anchors = mapOf(
                0f to 0,
                1000f to 1
            ),
            thresholds = { _, _ -> FractionalThreshold(0.5f) },
            orientation = Orientation.Horizontal
        )
) {
    Text("Desliza")
}

No hay comentarios.:

Publicar un comentario

INDICE