Kazemihabib1996
06/14/2020, 7:21 PMinterface LayoutModifier : Modifier.Element {
fun MeasureScope.measure(
measurable: Measurable,
constraints: Constraints,
layoutDirection: LayoutDirection
): MeasureScope.MeasureResult
How exactly LayoutModifier works?
instead of list of measurables for each child, there is only one measurable.
and I've playing with it, when I tried placeable.place(50.ipx, 50.ipx)
it applied for all children.
I think there is some thing I misunderstood about it.Adam Powell
06/14/2020, 7:50 PMKazemihabib1996
06/14/2020, 8:12 PM@Composable
fun SimpleBox(modifier: Modifier = Modifier, children: @Composable() () -> Unit) {
Layout(children = children, modifier = modifier) { measurables, constraints, layoutDirection ->
val placeable = measurables[0].measure(constraints)
val placeable2 = measurables[1].measure(constraints)
layout(placeable.width, placeable.height) {
placeable.place(0.ipx, 0.ipx)
placeable2.place(0.ipx, 100.ipx)
}
}
}
private class SimpleLayoutModifier(): LayoutModifier {
override fun MeasureScope.measure(
measurable: Measurable,
constraints: Constraints,
layoutDirection: LayoutDirection
): MeasureScope.MeasureResult {
val placeable = measurable.measure(constraints)
return layout(placeable.width, placeable.height) {
placeable.place(50.ipx, 50.ipx)
}
}
}
Kazemihabib1996
06/14/2020, 8:13 PMwith(DensityAmbient.current) {
SimpleBox(modifier = Modifier.drawBackground(Color.Blue).size(400.ipx.toDp()) ) {
Text("First one")
Text("Second one")
}
}
Kazemihabib1996
06/14/2020, 8:14 PMText()
widgets will be effected.
with(DensityAmbient.current) {
SimpleBox(modifier = Modifier.drawBackground(Color.Blue).size(400.ipx.toDp()) + SimpleLayoutModifier()) {
Text("First one")
Text("Second one")
}
}
Adam Powell
06/14/2020, 8:21 PMKazemihabib1996
06/14/2020, 8:28 PMKazemihabib1996
06/14/2020, 8:30 PMSimpleLayoutModifier().drawBackground(Color.Blue)
Adam Powell
06/14/2020, 9:01 PM