Files
AndroidJetpack/Jetpack-Compose-Playground/docs/cookbook/how_to_create_your_own_modifier
T
2026-07-15 16:57:36 +08:00

54 lines
1.6 KiB
Plaintext

# How to create your own Modifier
!!! info
This is the API of version alpha01. Newer versions may have a different one
Compose is using Modifiers to set certain aspects of a Composable like backgrounds, size or click events.
Compose already comes with
In this example i want to explain how you can create your own Modifier.
We will create a Modifier that scales the size of the Composable where it's applied to.
To create a Modifier you need to create a class that implements Modifier.Element.
```kotlin
/**
* A [Modifier.Element] that changes how its wrapped content is measured and laid out.
* It has the same measurement and layout functionality as the [androidx.compose.ui.Layout]
* component, while wrapping exactly one layout due to it being a modifier. In contrast,
* the [androidx.compose.ui.Layout] component is used to define the layout behavior of
* multiple children.
*
* @see androidx.compose.ui.Layout
*/
interface LayoutModifier : Modifier.Element {
```
```kotlin
class ScaleSizeModifier(val scale: Int) : LayoutModifier {
//1
override fun MeasureScope.measure(
measurable: Measurable,
constraints: Constraints
): MeasureScope.MeasureResult {
val pl = measurable.measure(constraints)
measurable.measure(
Constraints(
pl.width * scale,
pl.width * scale,
pl.height * scale,
pl.height * scale
)
)
return layout(pl.width, pl.height) {
pl.place(0, 0)
}
}
}
```