En Modifier i Jetpack Compose är ett objekt som används för att ändra hur en komponerbar funktion (Composable) ser ut, beter sig eller placeras.
Man kan se det som en lista med instruktioner som man skickar med till en komponent. Med modifiers kan du göra saker som att:
De flesta inbyggda komponenter (som Text, Box, Column) har en parameter som heter modifier. Du kedjar ihop olika funktioner med punkt-notation.
Text(
text = "Hej världen!",
modifier = Modifier
.padding(16.dp) // Inre marginal
.background(Color.Blue) // Bakgrundsfärg
.fillMaxWidth() // Ta upp hela bredden
.clickable { /* Klick! */ } // Gör den klickbar
)
Detta är det viktigaste att förstå med Modifiers. De appliceras i den ordning du skriver dem.
.padding(16.dp).background(Color.Red) -> Bakgrundsfärgen hamnar innanför marginalen..background(Color.Red).padding(16.dp) -> Marginalen hamnar utanför den färgade ytan (ser ut som en yttre marginal).Här är de absolut vanligaste som du kommer använda dagligen:
Storlek:
fillMaxSize(): Fyller hela den tillgängliga skärmytan.fillMaxWidth() / fillMaxHeight(): Fyller bredden eller höjden.size(width, height): Sätter en specifik storlek (t.ex. size(100.dp)).Layout:
padding(all): Lägger till luft runt innehållet.offset(x, y): Flyttar elementet ett visst avstånd utan att påverka de andra elementens position.Utseende:
background(color, shape): Sätter färg och ev. form (t.ex. RoundedCornerShape).border(width, color, shape): Lägger till en ram.clip(shape): Klipper innehållet efter en form (t.ex. en cirkel).Interaktion:
clickable { }: Gör komponenten klickbar.scrollable(...): Gör det möjligt att scrolla.Här kombinerar vi flera modifiers för att skapa ett eget gränssnittselement:
Box(
modifier = Modifier
.size(width = 200.dp, height = 60.dp)
.clip(RoundedCornerShape(12.dp)) // Rundade hörn
.background(Color.Cyan)
.clickable { println("Box klickad!") }
.padding(8.dp), // Innehållet hamnar 8dp in
contentAlignment = Alignment.Center
) {
Text("Klicka här")
}
modifier: Modifier = Modifier som parameter för att vara flexibla.